From 689ae579dda8fffe191e7a997b964488d53eb70e Mon Sep 17 00:00:00 2001 From: Kevin Heifner Date: Sat, 7 Nov 2026 20:17:53 -0500 Subject: [PATCH 1/6] Bill contracts reached through system contracts for their own CPU When a system contract (privileged, sysio or sysio.*) notifies or inline-calls a contract outside the system accounts, that contract pays the CPU of its own code. Frames below it bill the same contract, so a contract it forwards to or calls is billed to it. An explicit payer on the input action still pays for everything below it. The receipt's cpu_usage_us holds one entry per input action and then one per frame where billing switched, in execution order, and the transaction's CPU is their sum. A validator derives each entry's account by running the transaction: an entry the receipt leaves out bills nothing, so the receipt it builds differs from the block's and the block is rejected, and an extra entry fails the transaction. A contract billed this way pays no NET. Change-Id: I076e6c34f81034fe4a456c99c6795a46c1cfd478 --- libraries/chain/action.cpp | 10 +- libraries/chain/apply_context.cpp | 14 +- libraries/chain/controller.cpp | 4 +- .../chain/include/sysio/chain/action.hpp | 2 + libraries/chain/include/sysio/chain/block.hpp | 8 +- .../chain/include/sysio/chain/config.hpp | 4 + .../chain/include/sysio/chain/controller.hpp | 5 +- .../include/sysio/chain/resource_limits.hpp | 5 +- libraries/chain/include/sysio/chain/trace.hpp | 2 +- .../sysio/chain/transaction_context.hpp | 55 +- .../sysio/chain/transaction_metadata.hpp | 5 +- libraries/chain/resource_limits.cpp | 12 +- libraries/chain/transaction_context.cpp | 243 +++++-- libraries/testing/tester.cpp | 4 +- .../trace_api_plugin/test/test_extraction.cpp | 3 +- unittests/receiver_cpu_billing_tests.cpp | 627 ++++++++++++++++++ unittests/test-contracts/CMakeLists.txt | 1 + .../cpu_receiver_test/CMakeLists.txt | 6 + .../cpu_receiver_test/cpu_receiver_test.abi | 85 +++ .../cpu_receiver_test/cpu_receiver_test.cpp | 80 +++ .../cpu_receiver_test/cpu_receiver_test.hpp | 39 ++ .../cpu_receiver_test/cpu_receiver_test.wasm | Bin 0 -> 8475 bytes unittests/test_contracts.hpp.in | 1 + 23 files changed, 1141 insertions(+), 74 deletions(-) create mode 100644 unittests/receiver_cpu_billing_tests.cpp create mode 100644 unittests/test-contracts/cpu_receiver_test/CMakeLists.txt create mode 100644 unittests/test-contracts/cpu_receiver_test/cpu_receiver_test.abi create mode 100644 unittests/test-contracts/cpu_receiver_test/cpu_receiver_test.cpp create mode 100644 unittests/test-contracts/cpu_receiver_test/cpu_receiver_test.hpp create mode 100755 unittests/test-contracts/cpu_receiver_test/cpu_receiver_test.wasm diff --git a/libraries/chain/action.cpp b/libraries/chain/action.cpp index ce335edfbb..46f612ffd7 100644 --- a/libraries/chain/action.cpp +++ b/libraries/chain/action.cpp @@ -3,12 +3,14 @@ namespace sysio::chain { -account_name action::payer() const { +bool action::has_explicit_payer() const { // sysio_payer_name must be position 0; enforced by validate_referenced_accounts // and authorization_manager::check_authorization. - if (!authorization.empty() && authorization[0].permission == config::sysio_payer_name) - return authorization[0].actor; - return account; + return !authorization.empty() && authorization[0].permission == config::sysio_payer_name; +} + +account_name action::payer() const { + return has_explicit_payer() ? authorization[0].actor : account; } account_name action::first_authorizer() const { diff --git a/libraries/chain/apply_context.cpp b/libraries/chain/apply_context.cpp index fbfec3707c..6f3c622124 100644 --- a/libraries/chain/apply_context.cpp +++ b/libraries/chain/apply_context.cpp @@ -99,8 +99,14 @@ void apply_context::exec_one() action_return_value.clear(); receiver_account = &db.get( receiver ); receiver_account_metadata = db.find( receiver ); + // Read here rather than from `privileged`, which light validation leaves unset for a context-free action. + const bool receiver_privileged = + receiver_account_metadata != nullptr && receiver_account_metadata->is_privileged(); + const bool measured_frame = trx_context.begin_frame( + action_ordinal, config::is_system_account( receiver ) && receiver_privileged, + receiver_account_metadata != nullptr && receiver_account_metadata->code_hash != digest_type() ); if( !(context_free && control.skip_trx_checks()) ) { - privileged = receiver_account_metadata != nullptr && receiver_account_metadata->is_privileged(); + privileged = receiver_privileged; auto native = control.find_apply_handler( receiver, act->account, act->name ); if( native ) { if( trx_context.enforce_whiteblacklist && control.is_speculative_block() ) { @@ -131,6 +137,8 @@ void apply_context::exec_one() } validate_account_ram_deltas(); } + if( measured_frame ) + trx_context.end_frame( action_ordinal ); } FC_RETHROW_EXCEPTIONS( warn, "{} <= {}::{} pending console output: {}", receiver, act->account, act->name, _pending_console_output ) @@ -218,7 +226,7 @@ void apply_context::validate_account_ram_deltas() { auto& payer = itr->account; auto& ram_delta = itr->delta; if (payer != receiver && ram_delta > 0) { - if (receiver.prefix() == sysio::chain::config::system_account_name && is_privileged()) { + if (config::is_system_account(receiver) && is_privileged()) { // sysio.* contracts allowed } else if (payer == sysio::chain::config::system_account_name && is_privileged()) { // explicit sysio payer allowed when privileged @@ -574,7 +582,7 @@ action_name apply_context::get_sender() const { } bool apply_context::is_sys_vm_oc_whitelisted() const { - return receiver.prefix() == sysio::chain::config::system_account_name || // "sysio"_n + return config::is_system_account(receiver) || control.is_sys_vm_oc_whitelisted(receiver); } diff --git a/libraries/chain/controller.cpp b/libraries/chain/controller.cpp index 779111a093..99a29744b0 100644 --- a/libraries/chain/controller.cpp +++ b/libraries/chain/controller.cpp @@ -3755,7 +3755,7 @@ subjective_billing& controller::get_mutable_subjective_billing() { return my->subjective_bill; } -std::tuple controller::get_cpu_limit(account_name a) const { +std::tuple controller::get_cpu_limit(account_name a, const std::optional& current_time) const { static constexpr int64_t large_number_no_overflow = std::numeric_limits::max()/2; // Calculate the new highest network usage and CPU time that the billed account can afford to be billed const auto& rl = get_resource_limits_manager(); @@ -3771,7 +3771,7 @@ std::tuple controller::get_cpu_limit(account_name a) const greylist_limit = specified_greylist_limit; } } - auto [cpu_limit, cpu_was_greylisted] = rl.get_account_cpu_limit(a, greylist_limit); + auto [cpu_limit, cpu_was_greylisted] = rl.get_account_cpu_limit(a, greylist_limit, current_time); if( cpu_limit >= 0 ) { account_cpu_limit = cpu_limit; greylisted_cpu = cpu_was_greylisted; diff --git a/libraries/chain/include/sysio/chain/action.hpp b/libraries/chain/include/sysio/chain/action.hpp index 8e96867b29..d665ff750d 100644 --- a/libraries/chain/include/sysio/chain/action.hpp +++ b/libraries/chain/include/sysio/chain/action.hpp @@ -98,6 +98,8 @@ namespace sysio { namespace chain { return fc::raw::unpack(data); } + /// True when the first authorization names an explicit payer (permission sysio_payer_name). + bool has_explicit_payer() const; // sysio_payer_name actor or contract account_name payer() const; // first authorization actor (which will be sysio_payer_name actor if exists) or empty() if no authorizer diff --git a/libraries/chain/include/sysio/chain/block.hpp b/libraries/chain/include/sysio/chain/block.hpp index 4ed5f3b7c7..bb4b0eccf7 100644 --- a/libraries/chain/include/sysio/chain/block.hpp +++ b/libraries/chain/include/sysio/chain/block.hpp @@ -11,7 +11,11 @@ namespace sysio { namespace chain { }; bool operator==(const transaction_receipt_header&) const = default; - cpu_usage_t cpu_usage_us; ///< billed CPU for nth input action + /// Billed CPU: one entry per input action, then one per frame whose billing switched to a contract reached + /// through a system contract, in execution order. A receiver entry covers its frame and the frames below it + /// billed to the same contract; the validator derives each entry's account by running the transaction. The + /// transaction's CPU is the sum of all entries. + cpu_usage_t cpu_usage_us; }; struct transaction_receipt : public transaction_receipt_header { @@ -21,7 +25,7 @@ namespace sysio { namespace chain { packed_transaction trx; // Receipt digest format: pack(cpu_usage_us: vec) + pack(trx.digest()) - // cpu_usage_us is the per-input-action billed CPU vector, in action order. + // cpu_usage_us is the billed CPU vector: input actions in action order, then receiver entries. // Differs from upstream EOSIO which packed status, cpu_usage_us (uint32), and // net_usage_words ahead of the trx digest. Wire removed status and net_usage_words // (deferred trxs are not supported) and changed cpu_usage_us to a per-action vector. diff --git a/libraries/chain/include/sysio/chain/config.hpp b/libraries/chain/include/sysio/chain/config.hpp index 5071afc8d7..a334f4985a 100644 --- a/libraries/chain/include/sysio/chain/config.hpp +++ b/libraries/chain/include/sysio/chain/config.hpp @@ -24,6 +24,10 @@ namespace sysio::chain::config { static constexpr auto producers_account_name { "sysio.prods"_n }; static constexpr auto roa_account_name { "sysio.roa"_n }; + /// True for sysio and every sysio.* account. Callers that grant a system contract more also require it to be + /// privileged. + constexpr bool is_system_account( name account ) { return account.prefix() == system_account_name; } + // Active permission of producers account requires greater than 2/3 of the producers to authorize static constexpr auto majority_producers_permission_name { "prod.major"_n }; // greater than 1/2 of producers needed to authorize static constexpr auto minority_producers_permission_name { "prod.minor"_n }; // greater than 1/3 of producers needed to authorize0 diff --git a/libraries/chain/include/sysio/chain/controller.hpp b/libraries/chain/include/sysio/chain/controller.hpp index 805d4faec9..b0de4ce1ef 100644 --- a/libraries/chain/include/sysio/chain/controller.hpp +++ b/libraries/chain/include/sysio/chain/controller.hpp @@ -288,8 +288,9 @@ namespace sysio::chain { const subjective_billing& get_subjective_billing()const; subjective_billing& get_mutable_subjective_billing(); - // limit,greylisted,unlimited - std::tuple get_cpu_limit(account_name a) const; + /// CPU limit of `a` as (limit_us, greylisted, unlimited). `current_time` decays the account's usage to that + /// time first, for an account whose usage window was not updated in this block. + std::tuple get_cpu_limit(account_name a, const std::optional& current_time = {}) const; const flat_set& get_actor_whitelist() const; const flat_set& get_actor_blacklist() const; diff --git a/libraries/chain/include/sysio/chain/resource_limits.hpp b/libraries/chain/include/sysio/chain/resource_limits.hpp index c9b5e3b3f6..f87daf9ee5 100644 --- a/libraries/chain/include/sysio/chain/resource_limits.hpp +++ b/libraries/chain/include/sysio/chain/resource_limits.hpp @@ -105,7 +105,10 @@ namespace sysio { namespace chain { uint64_t get_block_cpu_limit() const; uint64_t get_block_net_limit() const; - std::pair get_account_cpu_limit( const account_name& name, uint32_t greylist_limit = config::maximum_elastic_resource_multiplier ) const; + /// Available CPU for `name`. With `current_time`, usage decays to that time first, for an account whose window + /// update_account_usage has not brought up to date in this block. + std::pair get_account_cpu_limit( const account_name& name, uint32_t greylist_limit = config::maximum_elastic_resource_multiplier, + const std::optional& current_time = {} ) const; std::pair get_account_net_limit( const account_name& name, uint32_t greylist_limit = config::maximum_elastic_resource_multiplier ) const; std::pair diff --git a/libraries/chain/include/sysio/chain/trace.hpp b/libraries/chain/include/sysio/chain/trace.hpp index da9607236b..5b3040cc02 100644 --- a/libraries/chain/include/sysio/chain/trace.hpp +++ b/libraries/chain/include/sysio/chain/trace.hpp @@ -36,7 +36,7 @@ namespace sysio::chain { action act; bool context_free = false; fc::microseconds elapsed; - std::optional cpu_usage_us; // only populated for input action + std::optional cpu_usage_us; // populated for an input action and for a frame whose billing switched to its receiver std::optional net_usage; // only populated for input action string console; transaction_id_type trx_id; ///< the transaction that generated this action diff --git a/libraries/chain/include/sysio/chain/transaction_context.hpp b/libraries/chain/include/sysio/chain/transaction_context.hpp index 3ea2f83f81..f480fdc03c 100644 --- a/libraries/chain/include/sysio/chain/transaction_context.hpp +++ b/libraries/chain/include/sysio/chain/transaction_context.hpp @@ -149,7 +149,31 @@ namespace sysio::chain { friend struct benchmark::interface_in_benchmark; // defined in benchmark/bls.cpp // limit,greylisted,unlimited - std::tuple get_cpu_limit(account_name a) const; + std::tuple get_cpu_limit(account_name a, const std::optional& current_time = {}) const; + + /** + * Picks the billed_cpu_us entry that pays for a frame: one receiver's run of one action. An input action bills + * its payer. A child (a notification or an inline action) bills its parent's entry, unless the parent's + * receiver is a system account and the child's receiver is a contract outside the system accounts: that + * contract then pays for its own code, in a new entry after the input entries. Below an explicit payer, and in + * an implicit transaction, every frame bills the input payer. Called by apply_context::exec_one. + * @param system_receiver the receiver is a privileged system account + * @param receiver_has_code the receiver has contract code as the frame starts + * @return true when the frame's CPU is measured for a receiver entry: end_frame follows if the frame completes + */ + bool begin_frame( uint32_t action_ordinal, bool system_receiver, bool receiver_has_code ); + /// Adds the CPU of a frame begin_frame measured to its receiver entry, and moves the deadline back to the + /// input action's payer. A frame that throws fails the transaction and skips this. + void end_frame( uint32_t action_ordinal ); + /// Sets the deadline for code billed to `account`, which has `cpu_limit_us` left from `from`, within the + /// transaction's deadline. + void set_billing_deadline( account_name account, int64_t cpu_limit_us, bool greylisted, fc::time_point from ); + + /// Sum of billed_cpu_us; throws if it does not fit the trace's 32-bit total. + uint32_t billed_cpu_sum() const; + /// Bills the receipt's entries for contracts billed for their own code. An entry the receipt leaves out bills + /// nothing, so a block receipt that leaves one out differs from the one built here and the block is rejected. + void bill_explicit_receiver_entries(); void verify_init_subjective_billing() const; void verify_net_usage(account_name account, int64_t net_usage, uint32_t net_usage_leeway); @@ -259,6 +283,35 @@ namespace sysio::chain { speculative_executed_adjusted_max_transaction_time // !prev_accounts_billing.empty() }; tx_cpu_usage_exceeded_reason tx_cpu_usage_reason = tx_cpu_usage_exceeded_reason::account_cpu_limit; + /// tx_cpu_usage_reason as init() left it: the reason when no account's CPU sets the deadline. + tx_cpu_usage_exceeded_reason trx_cpu_usage_reason = tx_cpu_usage_exceeded_reason::account_cpu_limit; + + /// The billed_cpu_us entry that pays for a frame. + struct frame_billing { + uint32_t entry = 0; ///< index in billed_cpu_us + bool system = false; ///< the receiver is a privileged system account + bool tracked = false; ///< false below an explicit payer, where every frame bills the input payer + }; + + /// A billed_cpu_us entry after the input entries: a frame whose receiver pays for its own code, together with + /// the frames below it that bill the same contract. + struct receiver_entry { + account_name account; + uint32_t input = 0; ///< index of the input action above it + uint32_t ordinal = 0; ///< action ordinal of the frame where billing switched + int64_t cpu_us = 0; ///< CPU measured for its frames + int64_t cpu_limit_us = 0; ///< CPU the contract has left, read as the entry starts + bool cpu_greylisted = false; + }; + + std::vector frames; ///< by action ordinal - 1 + std::vector receiver_entries; ///< in the order their frames started + fc::microseconds frame_begin; ///< now - action_start as the measured frame began + + /// Bills `cpu_us` of receiver entry `e` to its contract: CPU only, never NET. + void bill_receiver( const receiver_entry& e, uint32_t cpu_us ); + /// First authorizer of input action `input`, or the transaction's when it has none. + account_name input_first_authorizer( uint32_t input ) const; }; } // namespace sysio::chain diff --git a/libraries/chain/include/sysio/chain/transaction_metadata.hpp b/libraries/chain/include/sysio/chain/transaction_metadata.hpp index 942eef3f13..f2dd593f71 100644 --- a/libraries/chain/include/sysio/chain/transaction_metadata.hpp +++ b/libraries/chain/include/sysio/chain/transaction_metadata.hpp @@ -19,6 +19,9 @@ struct account_billing { uint64_t cpu_usage_us = 0; uint64_t net_usage = 0; bool cpu_greylisted = false; + /// False for a contract billed only for its own code after a system contract reached it. It pays CPU but no NET, + /// so its NET window is neither updated nor checked. + bool pays_net = true; }; using accounts_billing_t = flat_map; @@ -111,4 +114,4 @@ class transaction_metadata { } } // sysio::chain -FC_REFLECT( sysio::chain::account_billing, (cpu_limit_us)(cpu_usage_us)(net_usage)(cpu_greylisted) ) +FC_REFLECT( sysio::chain::account_billing, (cpu_limit_us)(cpu_usage_us)(net_usage)(cpu_greylisted)(pays_net) ) diff --git a/libraries/chain/resource_limits.cpp b/libraries/chain/resource_limits.cpp index 9a403ba759..e8215bc140 100644 --- a/libraries/chain/resource_limits.cpp +++ b/libraries/chain/resource_limits.cpp @@ -201,7 +201,8 @@ void resource_limits_manager::add_transaction_usage(const accounts_billing_t& ac } _db.modify( usage, [&]( auto& bu ){ - bu.net_usage.add( billing.net_usage, time_slot, config.account_net_usage_average_window ); + if( billing.pays_net ) + bu.net_usage.add( billing.net_usage, time_slot, config.account_net_usage_average_window ); bu.cpu_usage.add( billing.cpu_usage_us, time_slot, config.account_cpu_usage_average_window ); if (auto dm_logger = _get_deep_mind_logger(is_trx_transient)) { @@ -228,7 +229,7 @@ void resource_limits_manager::add_transaction_usage(const accounts_billing_t& ac max_user_use_in_window ); } - if( net_weight >= 0 && state.total_net_weight > 0) { + if( billing.pays_net && net_weight >= 0 && state.total_net_weight > 0) { uint128_t window_size = config.account_net_usage_average_window; auto virtual_network_capacity_in_window = (uint128_t)state.virtual_net_limit * window_size; @@ -470,8 +471,11 @@ uint64_t resource_limits_manager::get_block_net_limit() const { return config.net_limit_parameters.max - state.pending_net_usage; } -std::pair resource_limits_manager::get_account_cpu_limit( const account_name& name, uint32_t greylist_limit ) const { - auto [arl, greylisted] = get_account_cpu_limit_ex(name, greylist_limit); +std::pair resource_limits_manager::get_account_cpu_limit( const account_name& name, uint32_t greylist_limit, + const std::optional& current_time ) const { + auto [arl, greylisted] = get_account_cpu_limit_ex(name, greylist_limit, current_time); + if( current_time && arl.max >= 0 ) // limited account: available against the decayed usage + return {std::max(arl.max - arl.current_used, 0), greylisted}; return {arl.available, greylisted}; } diff --git a/libraries/chain/transaction_context.cpp b/libraries/chain/transaction_context.cpp index 24ffbb9906..0362bdb837 100644 --- a/libraries/chain/transaction_context.cpp +++ b/libraries/chain/transaction_context.cpp @@ -98,8 +98,11 @@ namespace sysio::chain { } executed_action_receipts = action_digests_t{}; - // accounts_billing should only be updated in init(), not updated during transaction execution + // accounts_billing should only be updated in init(), not updated during transaction execution. Receiver + // entries are billed after execution, so the retry starts them over. validate_ram_usage.clear(); + frames.clear(); + receiver_entries.clear(); } void transaction_context::initialize() { @@ -114,14 +117,12 @@ namespace sysio::chain { const transaction& trx = packed_trx.get_transaction(); if (explicit_billed_cpu_time) { - SYS_ASSERT(billed_cpu_us.size() == trx.total_actions(), transaction_exception, - "Transaction receipt cpu usage count ({}) does not match action count ({})", + // One entry per input action, then one per frame whose receiver pays for its own code. Those are known only + // after execution (bill_explicit_receiver_entries). + SYS_ASSERT(billed_cpu_us.size() >= trx.total_actions(), transaction_exception, + "Transaction receipt cpu usage count ({}) is less than the action count ({})", billed_cpu_us.size(), trx.total_actions()); - const int64_t cpu_sum = std::ranges::fold_left(billed_cpu_us, int64_t{0}, std::plus()); - SYS_ASSERT(cpu_sum >= 0 && cpu_sum <= std::numeric_limits::max(), - transaction_exception, - "Transaction total cpu usage {} us overflows uint32", cpu_sum); - trace->total_cpu_usage_us = static_cast(cpu_sum); + trace->total_cpu_usage_us = billed_cpu_sum(); } else { billed_cpu_us.reserve(trx.total_actions()); } @@ -275,6 +276,7 @@ namespace sysio::chain { trx_deadline = block_deadline; } + trx_cpu_usage_reason = tx_cpu_usage_reason; active_deadline = enforce_deadline ? trx_deadline : fc::time_point::maximum(); transaction_timer.start( active_deadline ); checktime(); // Fail early if deadline as already been exceeded @@ -330,8 +332,6 @@ namespace sysio::chain { void transaction_context::exec() { assert( is_initialized ); const transaction& trx = packed_trx.get_transaction(); - const auto& sub_bill = control.get_subjective_billing(); - const auto pending_block_time = control.pending_block_time(); auto add_trace_net = [&]( size_t idx ) { if (!is_input) return; @@ -368,28 +368,11 @@ namespace sysio::chain { billing_timer_exception_code = org_code; tx_cpu_usage_reason = org_reason; }); - active_deadline = trx_deadline; - if (!explicit_billed_cpu_time) { - account_name a = act.payer(); - auto& b = accounts_billing[a]; - cpu_limit_due_to_greylist = b.cpu_greylisted; - if (!is_read_only()) { - subjective_cpu_bill = sub_bill.get_subjective_bill(a, pending_block_time); - int64_t account_cpu_limit = b.cpu_limit_us - subjective_cpu_bill.count() + leeway.count(); - // Add leeway to allow powerup - // Possibly limit deadline to account subjective cpu left - if (action_start + fc::microseconds(account_cpu_limit) < trx_deadline) { - active_deadline = action_start + fc::microseconds(account_cpu_limit); - billing_timer_exception_code = tx_cpu_usage_exceeded::code_value; - tx_cpu_usage_reason = tx_cpu_usage_exceeded_reason::account_cpu_limit; - } - } - } - if (enforce_deadline) { - transaction_timer.stop(); - transaction_timer.start(active_deadline); + const account_name payer = act.payer(); + const auto& b = accounts_billing[payer]; + set_billing_deadline(payer, b.cpu_limit_us, b.cpu_greylisted, action_start); + if (enforce_deadline) checktime(); // Fail early if deadline already exceeded - } try { execute_action(i, 0); } catch (const fc::exception& e) { @@ -422,6 +405,9 @@ namespace sysio::chain { throw; } } + + if (explicit_billed_cpu_time) + bill_explicit_receiver_entries(); } void transaction_context::finalize() { @@ -444,6 +430,8 @@ namespace sysio::chain { constexpr uint32_t net_leeway = 0; for (auto& [account, bill]: accounts_billing) { + if (!bill.pays_net) + continue; verify_net_usage(account, bill.net_usage, net_leeway); if (!explicit_billed_cpu_time) { std::tie(bill.cpu_limit_us, bill.cpu_greylisted, std::ignore) = get_cpu_limit(account); @@ -454,7 +442,8 @@ namespace sysio::chain { trace->elapsed = std::max(now - start, fc::microseconds(0)); // Update CPU time and validate CPU usage - assert(billed_cpu_us.size() == packed_trx.get_transaction().total_actions()); + assert(billed_cpu_us.size() == + packed_trx.get_transaction().total_actions() + (explicit_billed_cpu_time ? receiver_entries.size() : 0)); assert(trace->action_traces.size() >= billed_cpu_us.size()); update_billed_cpu_time( now ); @@ -728,24 +717,45 @@ namespace sysio::chain { const bool bill_objectively = !is_read_only(); const bool bill_subjectively = bill_objectively && !is_implicit(); - const int64_t cpu_sum = std::ranges::fold_left(billed_cpu_us, int64_t{0}, std::plus()); - SYS_ASSERT(cpu_sum >= 0 && cpu_sum <= std::numeric_limits::max(), - transaction_exception, - "Transaction total cpu usage {} us overflows uint32", cpu_sum); - trace->total_cpu_usage_us = static_cast(cpu_sum); + account_subjective_cpu_bill_t authorizers_cpu; + const bool subjectively_bill_payer_disabled = control.get_subjective_billing().is_payer_billing_disabled(); + const size_t input_entries = billed_cpu_us.size(); + int64_t receivers_cpu_us = 0; + // Receiver entries exist only on a receipt, so only a transaction that succeeded gets them. A failed one keeps + // all of its CPU on the input entries, which take its receivers' time as part of the time outside them below. + if (!trace->except) { + billed_cpu_us.reserve(input_entries + receiver_entries.size()); + for (const auto& e : receiver_entries) { + const uint32_t cpu = + static_cast(std::min(e.cpu_us, std::numeric_limits::max())); + billed_cpu_us.emplace_back(cpu); + receivers_cpu_us += cpu; + trace->action_traces[e.ordinal - 1].cpu_usage_us = cpu; + if (bill_objectively) { + bill_receiver(e, cpu); + // Subjectively, the input action's first authorizer is billed, as for the input entry, and not twice + // when it is the receiver and payer billing bills it as a payer. + if (bill_subjectively) { + const account_name first_auth = input_first_authorizer(e.input); + if (first_auth != e.account || subjectively_bill_payer_disabled) + authorizers_cpu[first_auth] += fc::microseconds{cpu}; + } + } + } + } + + trace->total_cpu_usage_us = billed_cpu_sum(); const auto& cfg = control.get_global_properties().configuration; int64_t total_cpu_time_us = std::max( (now - pseudo_start).count(), static_cast(cfg.min_transaction_cpu_usage) ); SYS_ASSERT(total_cpu_time_us - trace->total_cpu_usage_us >= 0, tx_cpu_usage_exceeded, "Invalid CPU usage calculation {} - {}", total_cpu_time_us, trace->total_cpu_usage_us); - account_subjective_cpu_bill_t authorizers_cpu; - if (!billed_cpu_us.empty()) { + if (input_entries > 0) { assert(trace->action_traces.size() >= billed_cpu_us.size()); - // +1 so total is above min_transaction_cpu_usage - int64_t delta_per_action = (( total_cpu_time_us - trace->total_cpu_usage_us ) / billed_cpu_us.size()) + 1; - total_cpu_time_us = 0; - const bool subjectively_bill_payer_disabled = control.get_subjective_billing().is_payer_billing_disabled(); - const auto trx_first_authorizer = packed_trx.get_transaction().first_authorizer(); // used if action has no authorizer - for (size_t i = 0; i < billed_cpu_us.size(); ++i) { + // +1 so total is above min_transaction_cpu_usage. The time outside any entry's frames (signature recovery, + // setup) goes on the input entries only. + int64_t delta_per_action = (( total_cpu_time_us - trace->total_cpu_usage_us ) / input_entries) + 1; + total_cpu_time_us = receivers_cpu_us; + for (size_t i = 0; i < input_entries; ++i) { auto& b = billed_cpu_us[i]; // if exception thrown, action_traces may not be the same size as billed_cpu_us auto& act_trace = trace->action_traces[i]; @@ -756,9 +766,7 @@ namespace sysio::chain { auto payer = act_trace.act.payer(); accounts_billing[payer].cpu_usage_us += b.value; if (bill_subjectively) { - auto first_auth = act_trace.act.first_authorizer(); - if (first_auth.empty()) - first_auth = trx_first_authorizer; + auto first_auth = input_first_authorizer(i); // validate_referenced_accounts rejects non-read-only, non-implicit trxs with zero // auths (tx_no_auths), so first_auth must be populated by here on the subjective path. assert(!first_auth.empty()); @@ -794,6 +802,140 @@ namespace sysio::chain { is_cpu_updated = true; } + uint32_t transaction_context::billed_cpu_sum() const { + const int64_t cpu_sum = std::ranges::fold_left(billed_cpu_us, int64_t{0}, std::plus()); + SYS_ASSERT(cpu_sum >= 0 && cpu_sum <= std::numeric_limits::max(), + transaction_exception, + "Transaction total cpu usage {} us overflows uint32", cpu_sum); + return static_cast(cpu_sum); + } + + void transaction_context::bill_explicit_receiver_entries() { + assert(explicit_billed_cpu_time); + const size_t input_entries = packed_trx.get_transaction().total_actions(); + const size_t expected = input_entries + receiver_entries.size(); + SYS_ASSERT(billed_cpu_us.size() <= expected, transaction_exception, + "Transaction receipt cpu usage count ({}) is more than the expected {}: {} for input actions and {} " + "for contracts billed for their own code", billed_cpu_us.size(), expected, input_entries, + receiver_entries.size()); + // An entry the receipt leaves out bills nothing. In a block, the receipt built from billed_cpu_us then differs + // from the block's receipt, and the block is rejected. + billed_cpu_us.resize(expected); + for (size_t k = 0; k < receiver_entries.size(); ++k) { + const auto& e = receiver_entries[k]; + const uint32_t cpu = billed_cpu_us[input_entries + k].value; + bill_receiver(e, cpu); + trace->action_traces[e.ordinal - 1].cpu_usage_us = cpu; + } + } + + void transaction_context::bill_receiver( const receiver_entry& e, uint32_t cpu_us ) { + // A receiver pays CPU only: its NET window is neither updated nor checked. + accounts_billing.try_emplace(e.account, account_billing{ .cpu_limit_us = e.cpu_limit_us, + .cpu_greylisted = e.cpu_greylisted, + .pays_net = false }) + .first->second.cpu_usage_us += cpu_us; + } + + account_name transaction_context::input_first_authorizer( uint32_t input ) const { + auto first_auth = trace->action_traces[input].act.first_authorizer(); + return first_auth.empty() ? packed_trx.get_transaction().first_authorizer() : first_auth; + } + + bool transaction_context::begin_frame( uint32_t action_ordinal, bool system_receiver, bool receiver_has_code ) { + if (is_implicit()) + return false; // no receipt, so every frame bills the input payer + const action_trace& act_trace = get_action_trace(action_ordinal); + const uint32_t creator = act_trace.creator_action_ordinal.value; // the frame that notified or sent it + const uint32_t input_entries = packed_trx.get_transaction().total_actions(); + uint32_t entry = action_ordinal - 1; + if (creator == 0) { + assert(action_ordinal <= input_entries); + if (act_trace.act.has_explicit_payer()) + return false; // the explicit payer pays for every frame below it + } else { + if (creator > frames.size() || !frames[creator - 1].tracked) + return false; // below an explicit payer + const frame_billing& parent = frames[creator - 1]; + entry = parent.entry; + if (parent.system && !system_receiver && receiver_has_code) { + const bool parent_on_input = parent.entry < input_entries; + const account_name parent_payer = parent_on_input + ? get_action_trace(parent.entry + 1).act.payer() + : receiver_entries[parent.entry - input_entries].account; + if (act_trace.receiver != parent_payer) { + receiver_entry e{ .account = act_trace.receiver, + .input = parent_on_input ? parent.entry + : receiver_entries[parent.entry - input_entries].input, + .ordinal = action_ordinal }; + if (!explicit_billed_cpu_time && !is_read_only()) { + // Its usage window was not updated in this block, so its usage decays to the pending block. + std::tie(e.cpu_limit_us, e.cpu_greylisted, std::ignore) = + get_cpu_limit(e.account, block_timestamp_type(control.pending_block_time())); + } + entry = input_entries + receiver_entries.size(); + receiver_entries.push_back(e); + } + } + } + if (frames.size() < action_ordinal) + frames.resize(action_ordinal); + frames[action_ordinal - 1] = { .entry = entry, .system = system_receiver, .tracked = true }; + if (explicit_billed_cpu_time || entry < input_entries) + return false; // the receipt carries the CPU, or the input entry measures its whole action + + // The receiver pays for this frame, so the frame runs against the receiver's remaining CPU. + const receiver_entry& e = receiver_entries[entry - input_entries]; + int64_t used_us = 0; + for (const auto& r : receiver_entries) + if (r.account == e.account) + used_us += r.cpu_us; + const fc::time_point now = fc::time_point::now(); + frame_begin = now - action_start; + set_billing_deadline(e.account, e.cpu_limit_us - used_us, e.cpu_greylisted, now); + if (enforce_deadline) + checktime(); // fail early if the receiver has no CPU left + return true; + } + + void transaction_context::end_frame( uint32_t action_ordinal ) { + const uint32_t input_entries = packed_trx.get_transaction().total_actions(); + receiver_entry& e = receiver_entries[frames[action_ordinal - 1].entry - input_entries]; + // action_start moves forward by any pause, so this leaves paused time out + const fc::microseconds cpu = std::max(fc::time_point::now() - action_start - frame_begin, fc::microseconds(0)); + e.cpu_us += cpu.count(); + // The frame's CPU is not the input payer's: the action's clock and deadline move past it. + action_start += cpu; + const account_name payer = get_action_trace(e.input + 1).act.payer(); + const auto& b = accounts_billing.at(payer); + set_billing_deadline(payer, b.cpu_limit_us, b.cpu_greylisted, action_start); + } + + void transaction_context::set_billing_deadline( account_name account, int64_t cpu_limit_us, bool greylisted, + fc::time_point from ) { + active_deadline = trx_deadline; + tx_cpu_usage_reason = trx_cpu_usage_reason; + if (!explicit_billed_cpu_time) { + cpu_limit_due_to_greylist = greylisted; + if (!is_read_only()) { + subjective_cpu_bill = + control.get_subjective_billing().get_subjective_bill(account, control.pending_block_time()); + // Add leeway to allow powerup + const int64_t account_cpu_limit = cpu_limit_us - subjective_cpu_bill.count() + leeway.count(); + // Possibly limit deadline to account subjective cpu left + if (from + fc::microseconds(account_cpu_limit) < trx_deadline) { + active_deadline = from + fc::microseconds(account_cpu_limit); + billing_timer_exception_code = tx_cpu_usage_exceeded::code_value; + tx_cpu_usage_reason = tx_cpu_usage_exceeded_reason::account_cpu_limit; + } + } + } + if (enforce_deadline) { + transaction_timer.stop(); + transaction_timer.start(active_deadline); + } + } + void transaction_context::verify_init_subjective_billing() const { const chain::subjective_billing& subjective_bill = control.get_subjective_billing(); if (explicit_billed_cpu_time || subjective_bill.is_disabled()) @@ -835,8 +977,9 @@ namespace sysio::chain { } } - std::tuple transaction_context::get_cpu_limit(account_name a) const { - return control.get_cpu_limit(a); + std::tuple + transaction_context::get_cpu_limit(account_name a, const std::optional& current_time) const { + return control.get_cpu_limit(a, current_time); } void transaction_context::verify_net_usage(account_name a, int64_t net_usage, uint32_t net_usage_leeway) { diff --git a/libraries/testing/tester.cpp b/libraries/testing/tester.cpp index ee4bbfb7c5..1980927c50 100644 --- a/libraries/testing/tester.cpp +++ b/libraries/testing/tester.cpp @@ -659,7 +659,7 @@ namespace { }); include_ram_gift &= has_roa; - include_ram_gift &= a.prefix() != sysio::chain::config::system_account_name; + include_ram_gift &= !sysio::chain::config::is_system_account(a); if (include_ram_gift) { // if bios contract with setalimits available then provide ram for account which is similar to what sysio.system contract does const auto* acnt = control->find_account_metadata(sysio::chain::config::system_account_name); @@ -677,7 +677,7 @@ namespace { } include_roa_policy &= has_roa; - include_roa_policy &= a.prefix() != sysio::chain::config::system_account_name; + include_roa_policy &= !sysio::chain::config::is_system_account(a); if( include_roa_policy ) { // ramWeight of 4 SYS needed to cover wasmtest contract use trx.actions.emplace_back(get_action(config::roa_account_name, "addpolicy"_n, diff --git a/plugins/trace_api_plugin/test/test_extraction.cpp b/plugins/trace_api_plugin/test/test_extraction.cpp index 009be814d7..0ce89f6018 100644 --- a/plugins/trace_api_plugin/test/test_extraction.cpp +++ b/plugins/trace_api_plugin/test/test_extraction.cpp @@ -99,7 +99,8 @@ namespace { }); result.receiver = receiver; result.act = std::move(act); - // chain::action_trace::cpu_usage_us / net_usage are populated for input actions; + // chain::action_trace::cpu_usage_us / net_usage are populated for input actions (cpu_usage_us also for a + // frame whose billing switched to its receiver); // the block_extraction fixtures expect these to round-trip as fc::unsigned_int{0} // on every action, so set them here rather than at every call site. result.cpu_usage_us = fc::unsigned_int{0}; diff --git a/unittests/receiver_cpu_billing_tests.cpp b/unittests/receiver_cpu_billing_tests.cpp new file mode 100644 index 0000000000..cc350cf549 --- /dev/null +++ b/unittests/receiver_cpu_billing_tests.cpp @@ -0,0 +1,627 @@ +#include +#include +#include +#include +#include +#include +#include + +#include + +#include + +#include + +using namespace sysio; +using namespace sysio::chain; +using namespace sysio::testing; +using mvo = fc::mutable_variant_object; + +namespace { + +constexpr account_name token_account = "sysio.token"_n; +constexpr account_name msig_account = "sysio.msig"_n; +constexpr account_name system_receiver = "sysio.cpurcv"_n; ///< cpu_receiver_test on a privileged sysio account +constexpr account_name alice = "alice"_n; ///< plain account that issues the token +constexpr account_name bob = "bob"_n; ///< plain account +constexpr account_name carol = "carol"_n; ///< plain account given no CPU and no NET +constexpr account_name game = "game"_n; ///< contracts running cpu_receiver_test +constexpr account_name winner = "winner"_n; +constexpr account_name relay = "relay"_n; +constexpr account_name idle = "idle"_n; ///< contract given no CPU + +constexpr const char* max_supply = "1000000.0000 TKN"; +constexpr const char* issued = "2000.0000 TKN"; +constexpr const char* funding = "1000.0000 TKN"; ///< what the game starts with +constexpr const char* amount = "1.0000 TKN"; +constexpr const char* spin_memo = "spin:20000"; +constexpr uint32_t spin_count = 20000; +constexpr int64_t cpu_weight = 10'000'000'000; ///< ample CPU for the accounts that run or pay for code +constexpr uint32_t proposal_expiration_sec = 3600; +constexpr uint32_t high_min_trx_cpu_us = 20'000; +constexpr uint8_t small_max_cpu_usage_ms = 5; +constexpr const char* receipt_has_extra_entry = "is more than the expected"; +constexpr const char* receipt_mismatch = "receipt does not match"; +constexpr const char* account_cpu_limit_reached = "reached account cpu limit"; +constexpr const char* spun = "spun"; ///< what cpu_receiver_test::spin prints +constexpr int64_t beyond_any_leeway_us = 10'000'000; ///< more than the subjective CPU leeway +constexpr uint32_t pending_bill_lifetime_sec = 3600; + +using usage_window = resource_limits::usage_accumulator; + +bool same_window( const usage_window& a, const usage_window& b ) { + return a.last_ordinal == b.last_ordinal && a.value_ex == b.value_ex && a.consumed == b.consumed; +} + +uint64_t total( const std::vector& entries ) { + return std::accumulate( entries.begin(), entries.end(), uint64_t{ 0 } ); +} + +/// Contracts reached through system contracts pay CPU for their own code; see transaction_context::begin_frame. +struct receiver_cpu_tester : validating_tester { + receiver_cpu_tester() { + create_accounts( { token_account, msig_account, system_receiver, alice, bob, carol, game, winner, relay, idle } ); + produce_block(); + + set_code( token_account, test_contracts::sysio_token_wasm() ); + set_abi( token_account, test_contracts::sysio_token_abi() ); + set_privileged( token_account ); + set_code( msig_account, test_contracts::sysio_msig_wasm() ); + set_abi( msig_account, test_contracts::sysio_msig_abi() ); + set_privileged( msig_account ); + for( auto contract : { system_receiver, game, winner, relay, idle } ) { + set_code( contract, test_contracts::cpu_receiver_test_wasm() ); + set_abi( contract, test_contracts::cpu_receiver_test_abi() ); + } + set_privileged( system_receiver ); + for( auto account : { alice, game, winner, relay } ) + set_cpu_weight( account, cpu_weight ); + set_cpu_weight( idle, 0 ); + produce_block(); + + push_action( token_account, "create"_n, token_account, + mvo()( "issuer", alice )( "maximum_supply", asset::from_string( max_supply ) ) ); + push_action( token_account, "issue"_n, alice, + mvo()( "to", alice )( "quantity", asset::from_string( issued ) )( "memo", "" ) ); + push_action( token_account, "transfer"_n, alice, + mvo()( "from", alice )( "to", game )( "quantity", asset::from_string( funding ) )( "memo", "" ) ); + produce_block(); + } + + /// Sets `account`'s NET and CPU weights through sysio.bios, keeping its RAM. + void set_weights( account_name account, int64_t net_weight, int64_t cpu_weight ) { + int64_t ram_bytes = 0, current_net_weight = 0, current_cpu_weight = 0; + control->get_resource_limits_manager().get_account_limits( account, ram_bytes, current_net_weight, + current_cpu_weight ); + push_action( config::system_account_name, "setalimits"_n, config::system_account_name, + mvo()( "account", account )( "ram_bytes", ram_bytes )( "net_weight", net_weight ) + ( "cpu_weight", cpu_weight ) ); + } + + /// Sets `account`'s CPU weight, keeping its RAM and NET. + void set_cpu_weight( account_name account, int64_t weight ) { + int64_t ram_bytes = 0, net_weight = 0, current_cpu_weight = 0; + control->get_resource_limits_manager().get_account_limits( account, ram_bytes, net_weight, current_cpu_weight ); + set_weights( account, net_weight, weight ); + } + + /// Authorizes `actor`, naming it the explicit payer too when asked. + static vector auth( account_name actor, bool explicit_payer = false ) { + if( explicit_payer ) + return { { actor, config::sysio_payer_name }, { actor, config::active_name } }; + return { { actor, config::active_name } }; + } + + /// Replaces the pending block with a speculative one, as a node that is not producing applies transactions. + void start_speculative_block() { + control->abort_block(); + control->start_block( control->head().block_time() + fc::microseconds( config::block_interval_us ), {}, + controller::block_status::ephemeral ); + } + + signed_transaction make_trx( vector actions ) { + signed_transaction trx; + trx.actions = std::move( actions ); + set_transaction_headers( trx ); + sign( trx ); + return trx; + } + + void sign( signed_transaction& trx ) { + flat_set signers; + for( const auto& act : trx.actions ) + for( const auto& level : act.authorization ) + if( level.permission != config::sysio_payer_name ) + signers.insert( level.actor ); + trx.signatures.clear(); + for( auto signer : signers ) + trx.sign( get_private_key( signer, "active" ), control->get_chain_id() ); + } + + action transfer_action( account_name from, account_name to, const char* quantity, const std::string& memo, + bool explicit_payer = false ) { + return get_action( token_account, "transfer"_n, auth( from, explicit_payer ), + mvo()( "from", from )( "to", to )( "quantity", asset::from_string( quantity ) ) + ( "memo", memo ) ); + } + + /// Pushes with CPU measured as a producer measures it, so the receipt is built here rather than given. + transaction_trace_ptr push_measured( signed_transaction trx, fc::time_point deadline = fc::time_point::maximum() ) { + return push_transaction( trx, deadline, 0 ); + } + + transaction_trace_ptr transfer( account_name from, account_name to, const char* quantity, const std::string& memo, + bool explicit_payer = false ) { + return push_measured( make_trx( { transfer_action( from, to, quantity, memo, explicit_payer ) } ) ); + } + + const resource_limits::resource_object& usage( const controller& c, account_name account ) const { + return c.db().get( account ); + } + + static std::vector entries( const transaction_trace_ptr& trace ) { + BOOST_REQUIRE( trace->receipt ); + std::vector result; + for( const auto& e : trace->receipt->cpu_usage_us ) + result.push_back( e.value ); + return result; + } + + /// The trace of the `occurrence`-th frame that ran `receiver` for `act_name`. + static const action_trace& frame( const transaction_trace_ptr& trace, account_name receiver, action_name act_name, + size_t occurrence = 0 ) { + for( const auto& at : trace->action_traces ) + if( at.receiver == receiver && at.act.name == act_name && occurrence-- == 0 ) + return at; + BOOST_FAIL( "no frame " << occurrence << " for " << receiver << " " << act_name ); + return trace->action_traces.front(); + } + + /// Each account's CPU window, to compare after a transaction. + std::map cpu_windows( std::initializer_list accounts ) const { + std::map result; + for( auto a : accounts ) + result.emplace( a, usage( *control, a ).cpu_usage ); + return result; + } + + /// Billed accounts' CPU windows moved to the pending block; the others did not move. + void check_billed( const std::map& before, const flat_set& billed ) const { + const uint32_t slot = control->pending_block_timestamp().slot; + for( const auto& [account, w] : before ) { + const auto& now = usage( *control, account ).cpu_usage; + BOOST_TEST_CONTEXT( account ) { + if( billed.contains( account ) ) { + BOOST_TEST( now.last_ordinal == slot ); + BOOST_TEST( !same_window( now, w ) ); + } else { + BOOST_TEST( same_window( now, w ) ); + } + } + } + } + + /// After the validator applies the block, each account's CPU and NET windows match the producer's. + void produce_and_check_validator( std::initializer_list accounts ) { + produce_block(); + for( auto a : accounts ) { + const auto& p = usage( *control, a ); + const auto& v = usage( *validating_node, a ); + BOOST_TEST_CONTEXT( a << " on the validator" ) { + BOOST_TEST( same_window( p.cpu_usage, v.cpu_usage ) ); + BOOST_TEST( same_window( p.net_usage, v.net_usage ) ); + } + } + } +}; + +} // namespace + +BOOST_AUTO_TEST_SUITE(receiver_cpu_billing_tests) + +BOOST_FIXTURE_TEST_CASE( transfer_between_plain_accounts_adds_no_entry, receiver_cpu_tester ) try { + auto before = cpu_windows( { token_account, alice, bob } ); + auto trace = transfer( alice, bob, amount, spin_memo ); + + BOOST_TEST( entries( trace ).size() == 1u ); + BOOST_TEST( !frame( trace, bob, "transfer"_n ).cpu_usage_us ); + check_billed( before, { token_account } ); + produce_and_check_validator( { token_account, alice, bob } ); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( contract_pays_for_its_transfer_handler, receiver_cpu_tester ) try { + auto before = cpu_windows( { token_account, alice, game } ); + auto game_net = usage( *control, game ).net_usage; + auto trace = transfer( alice, game, amount, spin_memo ); + + const auto receipt = entries( trace ); + BOOST_REQUIRE_EQUAL( receipt.size(), 2u ); + BOOST_TEST( trace->action_traces[0].cpu_usage_us->value == receipt[0] ); + const auto& handler = frame( trace, game, "transfer"_n ); + BOOST_REQUIRE( handler.cpu_usage_us ); + BOOST_TEST( handler.cpu_usage_us->value == receipt[1] ); + BOOST_TEST( receipt[1] > 0u ); + BOOST_TEST( trace->total_cpu_usage_us.value == total( receipt ) ); + BOOST_TEST( !frame( trace, alice, "transfer"_n ).cpu_usage_us ); // no code, so no entry + check_billed( before, { token_account, game } ); + BOOST_TEST( same_window( usage( *control, game ).net_usage, game_net ) ); // NET stays with the input payer + produce_and_check_validator( { token_account, alice, game } ); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( authorizer_without_cpu_or_net_is_billed_nothing, receiver_cpu_tester ) try { + transfer( alice, carol, amount, "" ); + set_weights( carol, 0, 0 ); + produce_block(); + int64_t ram_bytes = 0, net_weight = -1, cpu_weight = -1; + control->get_resource_limits_manager().get_account_limits( carol, ram_bytes, net_weight, cpu_weight ); + BOOST_REQUIRE_EQUAL( net_weight, 0 ); + BOOST_REQUIRE_EQUAL( cpu_weight, 0 ); + + // sysio.token pays for its transfer, CPU and NET, and the game for its handler, CPU only. + auto before = cpu_windows( { token_account, carol, game } ); + auto carol_net = usage( *control, carol ).net_usage; + auto token_net = usage( *control, token_account ).net_usage; + auto trace = transfer( carol, game, amount, spin_memo ); + BOOST_TEST( entries( trace ).size() == 2u ); + check_billed( before, { token_account, game } ); + BOOST_TEST( same_window( usage( *control, carol ).net_usage, carol_net ) ); + BOOST_TEST( !same_window( usage( *control, token_account ).net_usage, token_net ) ); + produce_and_check_validator( { token_account, carol, game } ); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( contract_without_cpu_receives_only_from_an_explicit_payer, receiver_cpu_tester ) try { + BOOST_CHECK_EXCEPTION( transfer( alice, idle, amount, spin_memo ), tx_cpu_usage_exceeded, + fc_exception_message_contains( "billable CPU time for the account idle" ) ); + + auto before = cpu_windows( { token_account, alice, idle } ); + auto trace = transfer( alice, idle, amount, spin_memo, true ); + BOOST_TEST( entries( trace ).size() == 1u ); + check_billed( before, { alice } ); + produce_and_check_validator( { token_account, alice, idle } ); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( receiver_over_its_limit_fails_on_account_cpu_limit, receiver_cpu_tester ) try { + // A real deadline: the handler runs until idle's remaining CPU, which is tighter than the transaction's limit. + const auto deadline = fc::time_point::now() + fc::seconds( 10 ); + BOOST_CHECK_EXCEPTION( push_measured( make_trx( { transfer_action( alice, idle, amount, "forever" ) } ), deadline ), + tx_cpu_usage_exceeded, fc_exception_message_contains( "reached account cpu limit" ) ); + produce_block(); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( game_pays_for_its_payout_and_the_winner_for_its_handler, receiver_cpu_tester ) try { + // Called directly, the game is the input payer, so its transfer stays on the input entry. + auto before = cpu_windows( { token_account, game, winner } ); + auto payout = get_action( game, "payout"_n, auth( game ), + mvo()( "to", winner )( "quantity", asset::from_string( amount ) )( "memo", spin_memo ) ); + auto trace = push_measured( make_trx( { payout } ) ); + auto receipt = entries( trace ); + BOOST_REQUIRE_EQUAL( receipt.size(), 2u ); + BOOST_TEST( frame( trace, winner, "transfer"_n ).cpu_usage_us->value == receipt[1] ); + BOOST_TEST( !frame( trace, game, "transfer"_n ).cpu_usage_us ); // billed to the game already + BOOST_TEST( !frame( trace, token_account, "transfer"_n ).cpu_usage_us ); + check_billed( before, { game, winner } ); + produce_and_check_validator( { token_account, game, winner } ); + + // From the game's transfer handler: the game pays for its handler and its transfer, the winner for its handler. + before = cpu_windows( { token_account, alice, game, winner } ); + trace = transfer( alice, game, amount, "pay:winner" ); + receipt = entries( trace ); + BOOST_REQUIRE_EQUAL( receipt.size(), 3u ); + BOOST_TEST( trace->action_traces[0].cpu_usage_us->value == receipt[0] ); + BOOST_TEST( frame( trace, game, "transfer"_n ).cpu_usage_us->value == receipt[1] ); + BOOST_TEST( !frame( trace, game, "transfer"_n, 1 ).cpu_usage_us ); // notified of its own transfer + BOOST_TEST( frame( trace, winner, "transfer"_n ).cpu_usage_us->value == receipt[2] ); + check_billed( before, { token_account, game, winner } ); + produce_and_check_validator( { token_account, alice, game, winner } ); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( forwarded_notification_bills_the_forwarder, receiver_cpu_tester ) try { + auto before = cpu_windows( { token_account, relay, winner } ); + auto trace = transfer( alice, relay, amount, "forward:winner" ); + + BOOST_TEST( entries( trace ).size() == 2u ); + BOOST_TEST( frame( trace, relay, "transfer"_n ).cpu_usage_us.has_value() ); + BOOST_TEST( !frame( trace, winner, "transfer"_n ).cpu_usage_us ); + check_billed( before, { token_account, relay } ); + produce_and_check_validator( { token_account, relay, winner } ); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( explicit_payer_pays_for_everything_below_it, receiver_cpu_tester ) try { + auto before = cpu_windows( { token_account, alice, game, winner } ); + auto trace = transfer( alice, game, amount, "pay:winner", true ); + BOOST_TEST( entries( trace ).size() == 1u ); + check_billed( before, { alice } ); + produce_and_check_validator( { token_account, alice, game, winner } ); + + // within the transaction's max_cpu_usage_ms + auto trx = make_trx( { transfer_action( alice, game, amount, "forever", true ) } ); + trx.max_cpu_usage_ms = small_max_cpu_usage_ms; + sign( trx ); + BOOST_CHECK_EXCEPTION( push_measured( trx, fc::time_point::now() + fc::seconds( 10 ) ), tx_cpu_usage_exceeded, + fc_exception_message_contains( "reached trx specified max_cpu_usage_ms" ) ); + produce_block(); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( msig_exec_bills_the_called_contract, receiver_cpu_tester ) try { + transaction proposed; + proposed.actions.emplace_back( get_action( game, "spin"_n, auth( game ), mvo()( "n", spin_count ) ) ); + set_transaction_headers( proposed, proposal_expiration_sec ); + push_action( msig_account, "propose"_n, alice, + mvo()( "proposer", alice )( "proposal_name", "spin" )( "trx", proposed ) + ( "requested", vector{ { game, config::active_name } } ) ); + push_action( msig_account, "approve"_n, game, + mvo()( "proposer", alice )( "proposal_name", "spin" ) + ( "level", permission_level{ game, config::active_name } ) ); + produce_block(); + + auto before = cpu_windows( { msig_account, alice, game } ); + auto trace = push_measured( make_trx( { get_action( msig_account, "exec"_n, auth( alice ), + mvo()( "proposer", alice )( "proposal_name", "spin" ) + ( "executer", alice ) ) } ) ); + auto receipt = entries( trace ); + BOOST_REQUIRE_EQUAL( receipt.size(), 2u ); + BOOST_TEST( frame( trace, game, "spin"_n ).cpu_usage_us->value == receipt[1] ); + check_billed( before, { msig_account, game } ); + produce_and_check_validator( { msig_account, alice, game } ); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( overhead_goes_on_input_entries_only, receiver_cpu_tester ) try { + // A high minimum puts most of the transaction's CPU outside any action. + auto cfg = control->get_global_properties().configuration; + cfg.min_transaction_cpu_usage = high_min_trx_cpu_us; + // measured, since the new minimum applies to this transaction already + push_measured( make_trx( { get_action( config::system_account_name, "setparams"_n, + auth( config::system_account_name ), mvo()( "params", cfg ) ) } ) ); + produce_block(); + + auto trace = transfer( alice, game, amount, "spin:10" ); + auto receipt = entries( trace ); + BOOST_REQUIRE_EQUAL( receipt.size(), 2u ); + BOOST_TEST( total( receipt ) >= high_min_trx_cpu_us ); + // the receiver entry is its frame's run alone, which the frame's elapsed covers + BOOST_TEST( receipt[1] <= static_cast( frame( trace, game, "transfer"_n ).elapsed.count() ) ); + BOOST_TEST( receipt[0] > receipt[1] ); + produce_and_check_validator( { token_account, alice, game } ); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( subjective_billing_goes_to_the_first_authorizer, receiver_cpu_tester ) try { + auto& sub_bill = control->get_mutable_subjective_billing(); + + // A producer bills its own block's transactions objectively only. + sub_bill.reset(); + sub_bill.disable_payer_billing( false ); + transfer( alice, game, amount, "pay:winner" ); + for( auto account : { alice, token_account, game, winner } ) + BOOST_TEST_CONTEXT( account ) { + BOOST_TEST( sub_bill.get_subjective_bill( account, control->pending_block_time() ).count() == 0 ); + } + produce_block(); + + // Succeeding on a speculative block, the transaction is billed subjectively until a block includes it. + for( bool payer_billing_disabled : { true, false } ) { + BOOST_TEST_CONTEXT( "payer billing disabled " << payer_billing_disabled ) { + sub_bill.reset(); + sub_bill.disable_payer_billing( payer_billing_disabled ); + start_speculative_block(); + const auto now = control->pending_block_time(); + auto trx = make_trx( { transfer_action( alice, game, payer_billing_disabled ? "1.0000 TKN" : "2.0000 TKN", + "pay:winner" ) } ); + auto trace = push_measured( trx ); + auto receipt = entries( trace ); + BOOST_REQUIRE_EQUAL( receipt.size(), 3u ); + BOOST_TEST( sub_bill.get_subjective_bill( alice, now ).count() == trace->total_cpu_usage_us.value ); + // With payer billing, a contract billed for its own code is billed like any payer; the game is also the + // inline transfer's authorizer, which bills nothing. + const int64_t token_bill = payer_billing_disabled ? 0 : receipt[0]; + const int64_t game_bill = payer_billing_disabled ? 0 : receipt[1]; + const int64_t winner_bill = payer_billing_disabled ? 0 : receipt[2]; + BOOST_TEST( sub_bill.get_subjective_bill( token_account, now ).count() == token_bill ); + BOOST_TEST( sub_bill.get_subjective_bill( game, now ).count() == game_bill ); + BOOST_TEST( sub_bill.get_subjective_bill( winner, now ).count() == winner_bill ); + control->abort_block(); + + // The block that includes the transaction ends all of its subjective bills. + push_measured( trx ); + sub_bill.on_block( fc::logger::default_logger(), produce_block(), now ); + for( auto account : { alice, token_account, game, winner } ) + BOOST_TEST_CONTEXT( account ) { BOOST_TEST( sub_bill.get_subjective_bill( account, now ).count() == 0 ); } + } + } +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( receiver_that_authorized_the_input_is_billed_once, receiver_cpu_tester ) try { + auto& sub_bill = control->get_mutable_subjective_billing(); + + // The game sends its own tokens, so sysio.token notifies it: it authorizes the input and pays for its handler. + for( bool payer_billing_disabled : { true, false } ) { + BOOST_TEST_CONTEXT( "payer billing disabled " << payer_billing_disabled ) { + sub_bill.reset(); + sub_bill.disable_payer_billing( payer_billing_disabled ); + start_speculative_block(); + const auto now = control->pending_block_time(); + auto trace = transfer( game, bob, payer_billing_disabled ? "1.0000 TKN" : "2.0000 TKN", "" ); + auto receipt = entries( trace ); + BOOST_REQUIRE_EQUAL( receipt.size(), 2u ); + BOOST_TEST( frame( trace, game, "transfer"_n ).cpu_usage_us->value == receipt[1] ); + BOOST_TEST( sub_bill.get_subjective_bill( game, now ).count() == trace->total_cpu_usage_us.value ); + BOOST_TEST( sub_bill.get_subjective_bill( token_account, now ).count() == + ( payer_billing_disabled ? 0 : receipt[0] ) ); + control->abort_block(); + } + } + produce_block(); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( failed_transaction_bills_no_receiver, receiver_cpu_tester ) try { + auto& sub_bill = control->get_mutable_subjective_billing(); + + // Failing, the transaction keeps all of its CPU on the input actions, and no receiver is billed. + for( bool payer_billing_disabled : { true, false } ) { + BOOST_TEST_CONTEXT( "payer billing disabled " << payer_billing_disabled ) { + sub_bill.reset(); + sub_bill.disable_payer_billing( payer_billing_disabled ); + auto trx = make_trx( { transfer_action( alice, game, payer_billing_disabled ? "1.0000 TKN" : "2.0000 TKN", + "pay:winner" ), + transfer_action( alice, bob, max_supply, "" ) } ); // more than alice holds + BOOST_CHECK_THROW( push_measured( trx ), sysio_assert_message_exception ); + const auto now = control->pending_block_time(); + BOOST_TEST( sub_bill.get_subjective_bill( alice, now ).count() > 0 ); + BOOST_TEST( ( sub_bill.get_subjective_bill( token_account, now ).count() > 0 ) == !payer_billing_disabled ); + BOOST_TEST( sub_bill.get_subjective_bill( game, now ).count() == 0 ); + BOOST_TEST( sub_bill.get_subjective_bill( winner, now ).count() == 0 ); + } + } + produce_block(); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( receiver_subjective_bill_limits_its_frame, receiver_cpu_tester ) try { + auto& sub_bill = control->get_mutable_subjective_billing(); + sub_bill.reset(); + transfer( alice, bob, amount, "" ); + const auto now = control->pending_block_time(); + const auto [game_cpu_us, greylisted, unlimited] = control->get_cpu_limit( game, block_timestamp_type( now ) ); + BOOST_REQUIRE( !unlimited ); + + // CPU pending for the game from another transaction leaves it none, leeway included. + const auto pending_id = transaction_id_type::hash( std::string( "pending" ) ); + sub_bill.subjective_bill( pending_id, fc::time_point_sec( now + fc::seconds( pending_bill_lifetime_sec ) ), {}, + { { game, fc::microseconds( game_cpu_us + beyond_any_leeway_us ) } } ); + const auto deadline = fc::time_point::now() + fc::seconds( 10 ); + auto trx = make_trx( { transfer_action( alice, game, amount, spin_memo ) } ); + BOOST_CHECK_EXCEPTION( push_measured( trx, deadline ), tx_cpu_usage_exceeded, + fc_exception_message_contains( account_cpu_limit_reached ) ); + transfer( alice, bob, amount, "spin:1" ); // reaches no contract + + sub_bill.remove_subjective_billing( pending_id, 0 ); + BOOST_TEST( entries( push_measured( trx, deadline ) ).size() == 2u ); + produce_block(); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( read_only_transaction_skips_receiver_limits, receiver_cpu_tester ) try { + auto before = cpu_windows( { system_receiver, idle } ); + signed_transaction trx; + trx.actions.emplace_back( vector{}, system_receiver, "notify"_n, fc::raw::pack( idle ) ); + set_transaction_headers( trx ); + // idle has no CPU, but a read-only transaction is never billed or limited + auto trace = push_transaction( trx, fc::time_point::now() + fc::seconds( 10 ), 0, false, + transaction_metadata::trx_type::read_only ); + BOOST_TEST( entries( trace ).size() == 2u ); + BOOST_TEST( frame( trace, idle, "notify"_n ).cpu_usage_us.has_value() ); + check_billed( before, {} ); + produce_block(); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( explicit_receipt_entries_follow_the_billing_switches, receiver_cpu_tester ) try { + // An explicitly billed push reads its receipt the way a validator does. + auto push_explicit = [&]( const signed_transaction& trx, cpu_usage_t billed ) { + auto ptrx = std::make_shared( trx ); + auto meta = transaction_metadata::start_recover_keys( ptrx, control->get_thread_pool(), control->get_chain_id(), + fc::microseconds::maximum(), + transaction_metadata::trx_type::input ).get(); + auto trace = control->test_push_transaction( meta, fc::time_point::maximum(), fc::microseconds::maximum(), + billed, true ); + if( trace->except_ptr ) + std::rethrow_exception( trace->except_ptr ); + return trace; + }; + + auto switching = make_trx( { transfer_action( alice, game, amount, spin_memo ) } ); + BOOST_CHECK_EXCEPTION( push_explicit( switching, { 500, 500, 500 } ), transaction_exception, + fc_exception_message_contains( receipt_has_extra_entry ) ); + + auto plain = make_trx( { transfer_action( alice, bob, amount, "" ) } ); + BOOST_CHECK_EXCEPTION( push_explicit( plain, { 500, 500 } ), transaction_exception, + fc_exception_message_contains( receipt_has_extra_entry ) ); + BOOST_CHECK_EXCEPTION( push_explicit( plain, {} ), transaction_exception, + fc_exception_message_contains( "is less than the action count" ) ); + + auto before = cpu_windows( { token_account, game } ); + auto trace = push_explicit( switching, { 500, 700 } ); + BOOST_TEST( entries( trace ) == std::vector( { 500, 700 } ), boost::test_tools::per_element() ); + BOOST_TEST( frame( trace, game, "transfer"_n ).cpu_usage_us->value == 700u ); + check_billed( before, { token_account, game } ); + produce_and_check_validator( { token_account, game } ); + + // A receiver entry the receipt leaves out bills nothing, and the receipt built here gets it. + before = cpu_windows( { token_account, game } ); + trace = push_explicit( make_trx( { transfer_action( alice, game, amount, "spin:10" ) } ), { 500 } ); + BOOST_TEST( entries( trace ) == std::vector( { 500, 0 } ), boost::test_tools::per_element() ); + BOOST_TEST( frame( trace, game, "transfer"_n ).cpu_usage_us->value == 0u ); + check_billed( before, { token_account, game } ); + produce_and_check_validator( { token_account, game } ); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( context_free_receiver_entry_is_the_same_under_light_validation, receiver_cpu_tester ) try { + auto before = cpu_windows( { system_receiver, game } ); + auto trace = push_measured( make_trx( { get_action( system_receiver, "cfspin"_n, auth( alice ), + mvo()( "to", game )( "n", spin_count ) ) } ) ); + const auto receipt = entries( trace ); + BOOST_REQUIRE_EQUAL( receipt.size(), 2u ); + const auto& spin = frame( trace, game, "spin"_n ); + BOOST_TEST( spin.context_free ); + BOOST_TEST( spin.console == spun ); + BOOST_TEST( spin.cpu_usage_us->value == receipt[1] ); + check_billed( before, { system_receiver, game } ); + produce_and_check_validator( { system_receiver, game } ); + + // A node that skips context-free actions in this producer's blocks builds the same receipt and windows. + fc::temp_directory dir; + auto [cfg, genesis] = tester::default_config( dir ); + cfg.trusted_producers = { control->head().producer() }; + tester light( cfg, genesis ); + transaction_trace_ptr light_trace; + auto connection = light.control->applied_transaction().connect( + [&]( std::tuple x ) { + if( std::get<0>( x )->id == trace->id ) + light_trace = std::get<0>( x ); + } ); + for( uint32_t n = 2; n <= control->head().block_num(); ++n ) + light.push_block( control->fetch_block_by_number( n ) ); + BOOST_REQUIRE( light_trace && light_trace->receipt ); + BOOST_TEST( ( *light_trace->receipt == *trace->receipt ) ); + BOOST_TEST( frame( light_trace, game, "spin"_n ).console.empty() ); // not run + for( auto a : { system_receiver, game } ) { + BOOST_TEST_CONTEXT( a << " on the light node" ) { + BOOST_TEST( same_window( usage( *control, a ).cpu_usage, usage( *light.control, a ).cpu_usage ) ); + BOOST_TEST( same_window( usage( *control, a ).net_usage, usage( *light.control, a ).net_usage ) ); + } + } +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( block_with_wrong_receipt_entry_count_is_rejected, receiver_cpu_tester ) try { + transfer( alice, game, amount, spin_memo ); + transfer( alice, bob, amount, "" ); + auto block = produce_block(); + BOOST_REQUIRE_EQUAL( block->transactions.size(), 2u ); + BOOST_REQUIRE_EQUAL( block->transactions[0].cpu_usage_us.size(), 2u ); + BOOST_REQUIRE_EQUAL( block->transactions[1].cpu_usage_us.size(), 1u ); + + // `block` with its receipts edited, re-merkled and re-signed. + auto tamper = [&]( auto&& edit ) { + auto copy = block->clone(); + edit( copy->transactions ); + deque digests; + for( const auto& r : copy->transactions ) + digests.emplace_back( r.digest() ); + copy->transaction_mroot = calculate_merkle( std::move( digests ) ); + copy->producer_signatures = { get_private_key( copy->producer, "active" ).sign( copy->calculate_id() ) }; + return signed_block::create_signed_block( std::move( copy ) ); + }; + // A node at the block before `block` rejects `bad`. + auto other_node = [&]() { + auto other = std::make_unique( setup_policy::none ); + for( uint32_t n = 2; n < block->block_num(); ++n ) + other->push_block( control->fetch_block_by_number( n ) ); + return other; + }; + + // Left out, the receiver entry bills nothing, so the receipt the node builds differs from the block's. + BOOST_CHECK_EXCEPTION( other_node()->push_block( + tamper( []( auto& receipts ) { receipts[0].cpu_usage_us.pop_back(); } ) ), + block_validate_exception, fc_exception_message_contains( receipt_mismatch ) ); + BOOST_CHECK_EXCEPTION( other_node()->push_block( tamper( []( auto& receipts ) { + receipts[1].cpu_usage_us.push_back( fc::unsigned_int( 1 ) ); } ) ), + transaction_exception, fc_exception_message_contains( receipt_has_extra_entry ) ); +} FC_LOG_AND_RETHROW() + +BOOST_AUTO_TEST_SUITE_END() diff --git a/unittests/test-contracts/CMakeLists.txt b/unittests/test-contracts/CMakeLists.txt index 1e93654ad9..3c95d24d6e 100644 --- a/unittests/test-contracts/CMakeLists.txt +++ b/unittests/test-contracts/CMakeLists.txt @@ -23,6 +23,7 @@ elseif( USE_SYSIO_CDT_1_8_X ) endif() add_subdirectory( asserter ) +add_subdirectory( cpu_receiver_test ) add_subdirectory( get_sender_test ) add_subdirectory( get_table_test ) add_subdirectory( integration_test ) diff --git a/unittests/test-contracts/cpu_receiver_test/CMakeLists.txt b/unittests/test-contracts/cpu_receiver_test/CMakeLists.txt new file mode 100644 index 0000000000..c9d6b29499 --- /dev/null +++ b/unittests/test-contracts/cpu_receiver_test/CMakeLists.txt @@ -0,0 +1,6 @@ +if( BUILD_TEST_CONTRACTS ) + add_contract( cpu_receiver_test cpu_receiver_test cpu_receiver_test.cpp ) +else() + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/cpu_receiver_test.wasm ${CMAKE_CURRENT_BINARY_DIR}/cpu_receiver_test.wasm COPYONLY ) + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/cpu_receiver_test.abi ${CMAKE_CURRENT_BINARY_DIR}/cpu_receiver_test.abi COPYONLY ) +endif() diff --git a/unittests/test-contracts/cpu_receiver_test/cpu_receiver_test.abi b/unittests/test-contracts/cpu_receiver_test/cpu_receiver_test.abi new file mode 100644 index 0000000000..81bc968a3e --- /dev/null +++ b/unittests/test-contracts/cpu_receiver_test/cpu_receiver_test.abi @@ -0,0 +1,85 @@ +{ + "____comment": "This file was generated with sysio-abigen. DO NOT EDIT ", + "version": "sysio::abi/1.2", + "types": [], + "structs": [ + { + "name": "cfspin", + "base": "", + "fields": [ + { + "name": "to", + "type": "name" + }, + { + "name": "n", + "type": "uint32" + } + ] + }, + { + "name": "notify", + "base": "", + "fields": [ + { + "name": "to", + "type": "name" + } + ] + }, + { + "name": "payout", + "base": "", + "fields": [ + { + "name": "to", + "type": "name" + }, + { + "name": "quantity", + "type": "asset" + }, + { + "name": "memo", + "type": "string" + } + ] + }, + { + "name": "spin", + "base": "", + "fields": [ + { + "name": "n", + "type": "uint32" + } + ] + } + ], + "actions": [ + { + "name": "cfspin", + "type": "cfspin", + "ricardian_contract": "" + }, + { + "name": "notify", + "type": "notify", + "ricardian_contract": "" + }, + { + "name": "payout", + "type": "payout", + "ricardian_contract": "" + }, + { + "name": "spin", + "type": "spin", + "ricardian_contract": "" + } + ], + "tables": [], + "ricardian_clauses": [], + "variants": [], + "action_results": [] +} \ No newline at end of file diff --git a/unittests/test-contracts/cpu_receiver_test/cpu_receiver_test.cpp b/unittests/test-contracts/cpu_receiver_test/cpu_receiver_test.cpp new file mode 100644 index 0000000000..da8eb428fb --- /dev/null +++ b/unittests/test-contracts/cpu_receiver_test/cpu_receiver_test.cpp @@ -0,0 +1,80 @@ +#include "cpu_receiver_test.hpp" + +#include + +using namespace sysio; + +namespace { + +constexpr name token_account = "sysio.token"_n; +constexpr name transfer_action = "transfer"_n; +constexpr name spin_action = "spin"_n; +constexpr const char* spun = "spun"; +constexpr uint32_t default_spins = 1000; +constexpr std::string_view spin_command = "spin:"; +constexpr std::string_view forward_command = "forward:"; +constexpr std::string_view pay_command = "pay:"; +constexpr std::string_view forever_command = "forever"; +constexpr std::string_view pay_memo = "spin:1000"; ///< the payee loops default_spins times + +bool starts_with( std::string_view text, std::string_view prefix ) { + return text.substr( 0, prefix.size() ) == prefix; +} + +void loop( uint32_t n ) { + volatile uint64_t sum = 0; + for( uint32_t i = 0; i < n; ++i ) + sum = sum + i; +} + +uint32_t parse_count( std::string_view digits ) { + uint32_t n = 0; + for( char c : digits ) { + check( c >= '0' && c <= '9', "spin count must be decimal digits" ); + n = n * 10 + static_cast( c - '0' ); + } + return n; +} + +void send_transfer( name from, name to, const asset& quantity, const std::string& memo ) { + action( permission_level{ from, "active"_n }, token_account, transfer_action, + std::make_tuple( from, to, quantity, memo ) ).send(); +} + +} // namespace + +void cpu_receiver_test::on_transfer( name from, name to, asset quantity, std::string memo ) { + if( to != get_self() ) { + loop( default_spins ); + return; + } + const std::string_view command = memo; + if( starts_with( command, spin_command ) ) { + loop( parse_count( command.substr( spin_command.size() ) ) ); + } else if( starts_with( command, forward_command ) ) { + require_recipient( name( command.substr( forward_command.size() ) ) ); + } else if( starts_with( command, pay_command ) ) { + send_transfer( get_self(), name( command.substr( pay_command.size() ) ), quantity, std::string( pay_memo ) ); + } else if( command == forever_command ) { + while( true ) + loop( default_spins ); + } +} + +void cpu_receiver_test::payout( name to, asset quantity, std::string memo ) { + require_auth( get_self() ); + send_transfer( get_self(), to, quantity, memo ); +} + +void cpu_receiver_test::spin( uint32_t n ) { + loop( n ); + print( spun ); +} + +void cpu_receiver_test::cfspin( name to, uint32_t n ) { + action( std::vector{}, to, spin_action, std::make_tuple( n ) ).send_context_free(); +} + +void cpu_receiver_test::notify( name to ) { + require_recipient( to ); +} diff --git a/unittests/test-contracts/cpu_receiver_test/cpu_receiver_test.hpp b/unittests/test-contracts/cpu_receiver_test/cpu_receiver_test.hpp new file mode 100644 index 0000000000..200b515b8c --- /dev/null +++ b/unittests/test-contracts/cpu_receiver_test/cpu_receiver_test.hpp @@ -0,0 +1,39 @@ +#pragma once + +#include +#include + +#include + +/// Does CPU work in a contract reached through sysio.token or sysio.msig, for the CPU billing tests. +class [[sysio::contract]] cpu_receiver_test : public sysio::contract { +public: + using sysio::contract::contract; + + /** + * Handles a sysio.token transfer this contract is notified of. A transfer to it does what the memo says: + * spin: loops n times + * forward: forwards the notification to acct + * pay: pays the quantity to acct with sysio.token, memo "spin:1000" + * forever loops until the transaction runs out of CPU + * A forwarded notification, or one for a transfer it sends, loops the default number of times. + */ + [[sysio::on_notify("sysio.token::transfer")]] + void on_transfer( sysio::name from, sysio::name to, sysio::asset quantity, std::string memo ); + + /// Pays `quantity` to `to` with sysio.token. + [[sysio::action]] + void payout( sysio::name to, sysio::asset quantity, std::string memo ); + + /// Loops n times and prints that it ran. It needs no authorization and is context free. + [[sysio::action]] + void spin( uint32_t n ); + + /// Sends `to` a context-free inline `spin` of n loops. + [[sysio::action]] + void cfspin( sysio::name to, uint32_t n ); + + /// Notifies `to` of this action, without authorization or writes, so a read-only transaction can run it. + [[sysio::action]] + void notify( sysio::name to ); +}; diff --git a/unittests/test-contracts/cpu_receiver_test/cpu_receiver_test.wasm b/unittests/test-contracts/cpu_receiver_test/cpu_receiver_test.wasm new file mode 100755 index 0000000000000000000000000000000000000000..8ddd90a95533d5406c8a5916d96df80678fdf8fe GIT binary patch literal 8475 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 Date: Sat, 7 Nov 2026 22:18:47 -0500 Subject: [PATCH 2/6] Keep the transaction's CPU total in the receipt entry count test The test that leaves a receiver entry out of a receipt now moves that entry's CPU onto the input entry. The input entry alone can be under the CPU minimum, and on fast builds the minimum check rejected the block before the receipt comparison ran. Change-Id: I79ec207a7bdb550e657ee986cef6535fc97d3989 --- unittests/receiver_cpu_billing_tests.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/unittests/receiver_cpu_billing_tests.cpp b/unittests/receiver_cpu_billing_tests.cpp index cc350cf549..eb2360ed50 100644 --- a/unittests/receiver_cpu_billing_tests.cpp +++ b/unittests/receiver_cpu_billing_tests.cpp @@ -615,9 +615,12 @@ BOOST_FIXTURE_TEST_CASE( block_with_wrong_receipt_entry_count_is_rejected, recei return other; }; - // Left out, the receiver entry bills nothing, so the receipt the node builds differs from the block's. - BOOST_CHECK_EXCEPTION( other_node()->push_block( - tamper( []( auto& receipts ) { receipts[0].cpu_usage_us.pop_back(); } ) ), + // Left out, the receiver entry bills nothing, so the receipt the node builds differs from the block's. Its CPU + // moves onto the input entry, so the transaction still meets the CPU minimum. + BOOST_CHECK_EXCEPTION( other_node()->push_block( tamper( []( auto& receipts ) { + auto& cpu = receipts[0].cpu_usage_us; + cpu.front() = fc::unsigned_int( cpu.front().value + cpu.back().value ); + cpu.pop_back(); } ) ), block_validate_exception, fc_exception_message_contains( receipt_mismatch ) ); BOOST_CHECK_EXCEPTION( other_node()->push_block( tamper( []( auto& receipts ) { receipts[1].cpu_usage_us.push_back( fc::unsigned_int( 1 ) ); } ) ), From bbabd2c8b42523100d91a874d38c8e2899514503 Mon Sep 17 00:00:00 2001 From: Kevin Heifner Date: Mon, 9 Nov 2026 08:47:13 -0500 Subject: [PATCH 3/6] Bill receivers only after the final CPU checks pass finalize billed a successful transaction subjectively before its final CPU checks ran. When a check then failed, the controller could not rebill the transaction, so its pending subjective bill stayed in place, receivers included, although the transaction never reaches a block. finalize now bills the CPU, runs the checks and records the usage, and bills subjectively only after all of them pass. A failed check undoes the billing, and the controller bills the transaction as a failed one: its CPU stays on the input entries and no receiver is billed. Payers of such a transaction now get a failure's subjective bill too, on producing nodes as well. A contract billed for its own code is checked against its CPU limit as the transaction leaves it, read again from the final state with its usage decayed to the pending block, so CPU granted to it later in the transaction counts. The limit read as its first frame starts still sets the frames' deadline. New tests cover both, and receiver billing for a privileged versus an unprivileged sysio.* receiver, two inputs with different authorizers, a contract reached twice, a receiver that also pays for another input, an explicit payer on one of two inputs, a receiver frame stopped by max_cpu_usage_ms, a greylisted receiver, and code set or cleared earlier in the same transaction. Change-Id: Ib8d80437784b4d42228a3dd0feb815bd268fc804 --- .../sysio/chain/transaction_context.hpp | 16 +- libraries/chain/transaction_context.cpp | 106 +++++-- unittests/receiver_cpu_billing_tests.cpp | 283 +++++++++++++++++- 3 files changed, 360 insertions(+), 45 deletions(-) diff --git a/libraries/chain/include/sysio/chain/transaction_context.hpp b/libraries/chain/include/sysio/chain/transaction_context.hpp index f480fdc03c..1c6b6aa26b 100644 --- a/libraries/chain/include/sysio/chain/transaction_context.hpp +++ b/libraries/chain/include/sysio/chain/transaction_context.hpp @@ -129,6 +129,8 @@ namespace sysio::chain { void pause_billing_timer(); void resume_billing_timer(fc::time_point resume_from = fc::time_point{}); + /// Bills the CPU measured so far, objectively and subjectively, once. The controller calls it for a + /// transaction that failed; finalize() bills one that succeeds itself, so that its final checks can fail it. void update_billed_cpu_time( fc::time_point now ); void validate_referenced_accounts( const transaction& trx, bool enforce_actor_whitelist_blacklist )const; @@ -300,7 +302,7 @@ namespace sysio::chain { uint32_t input = 0; ///< index of the input action above it uint32_t ordinal = 0; ///< action ordinal of the frame where billing switched int64_t cpu_us = 0; ///< CPU measured for its frames - int64_t cpu_limit_us = 0; ///< CPU the contract has left, read as the entry starts + int64_t cpu_limit_us = 0; ///< CPU the contract has left as the entry starts, for the deadline bool cpu_greylisted = false; }; @@ -308,7 +310,17 @@ namespace sysio::chain { std::vector receiver_entries; ///< in the order their frames started fc::microseconds frame_begin; ///< now - action_start as the measured frame began - /// Bills `cpu_us` of receiver entry `e` to its contract: CPU only, never NET. + /// Bills the measured CPU objectively: adds the receiver entries when the transaction succeeded, puts the time + /// outside any entry's frames on the input entries, and adds each entry to its account in accounts_billing. + /// Returns the CPU to bill subjectively to the input actions' first authorizers. + account_subjective_cpu_bill_t bill_cpu( fc::time_point now ); + /// Undoes bill_cpu() for a transaction that fails after it, so that it can be billed as a failed one: + /// `measured_cpu_us` and `unbilled` are billed_cpu_us and accounts_billing as bill_cpu() found them. + void unbill_cpu( cpu_usage_t measured_cpu_us, accounts_billing_t unbilled ); + /// Bills `authorizers_cpu` subjectively, and the accounts in accounts_billing unless payer billing is + /// disabled: pending until a block includes the transaction when it succeeded, or as a failure. + void bill_subjectively( const account_subjective_cpu_bill_t& authorizers_cpu ); + /// Bills `cpu_us` of receiver entry `e` to its contract: CPU only, never NET. finalize() reads its CPU limit. void bill_receiver( const receiver_entry& e, uint32_t cpu_us ); /// First authorizer of input action `input`, or the transaction's when it has none. account_name input_first_authorizer( uint32_t input ) const; diff --git a/libraries/chain/transaction_context.cpp b/libraries/chain/transaction_context.cpp index 0362bdb837..372b6430e1 100644 --- a/libraries/chain/transaction_context.cpp +++ b/libraries/chain/transaction_context.cpp @@ -445,20 +445,50 @@ namespace sysio::chain { assert(billed_cpu_us.size() == packed_trx.get_transaction().total_actions() + (explicit_billed_cpu_time ? receiver_entries.size() : 0)); assert(trace->action_traces.size() >= billed_cpu_us.size()); - update_billed_cpu_time( now ); - validate_cpu_minimum(); + // The checks below can still fail the transaction, so its subjective bill waits for them. A check that fails + // undoes the CPU billing, and the controller then bills the transaction as a failed one. + cpu_usage_t measured_cpu_us; + accounts_billing_t unbilled; + account_subjective_cpu_bill_t authorizers_cpu; if (!explicit_billed_cpu_time) { - // validated in init() when explicit_billed_cpu_time (validating trx in block) - validate_trx_billed_cpu(); + measured_cpu_us = billed_cpu_us; + unbilled = accounts_billing; + } + try { + if (!explicit_billed_cpu_time) { + authorizers_cpu = bill_cpu( now ); + // A contract billed for its own code is checked against its limit as the transaction leaves it, which + // counts CPU the transaction granted it. Its usage window was not updated in this block. + for (auto& [account, bill] : accounts_billing) { + if (!bill.pays_net) { + std::tie(bill.cpu_limit_us, bill.cpu_greylisted, std::ignore) = + get_cpu_limit(account, block_timestamp_type(control.pending_block_time())); + } + } + } - for (const auto& [account, b] : accounts_billing) { - validate_available_account_cpu( account, b.cpu_usage_us, b.cpu_limit_us, b.cpu_greylisted ); + validate_cpu_minimum(); + if (!explicit_billed_cpu_time) { + // validated in init() when explicit_billed_cpu_time (validating trx in block) + validate_trx_billed_cpu(); + + for (const auto& [account, b] : accounts_billing) { + validate_available_account_cpu( account, b.cpu_usage_us, b.cpu_limit_us, b.cpu_greylisted ); + } } + + // Should never fail + rl.add_transaction_usage( accounts_billing, trace->total_cpu_usage_us, trace->net_usage, + block_timestamp_type(control.pending_block_time()).slot, is_transient() ); + } catch (...) { + if (!explicit_billed_cpu_time) + unbill_cpu( std::move(measured_cpu_us), std::move(unbilled) ); + throw; } - rl.add_transaction_usage( accounts_billing, trace->total_cpu_usage_us, trace->net_usage, - block_timestamp_type(control.pending_block_time()).slot, is_transient() ); // Should never fail + if (!explicit_billed_cpu_time) + bill_subjectively( authorizers_cpu ); } @@ -707,6 +737,11 @@ namespace sysio::chain { void transaction_context::update_billed_cpu_time( fc::time_point now ) { if( explicit_billed_cpu_time || is_cpu_updated ) return; // updated in init() for explicit_billed_cpu + bill_subjectively( bill_cpu( now ) ); + } + + account_subjective_cpu_bill_t transaction_context::bill_cpu( fc::time_point now ) { + assert(!explicit_billed_cpu_time && !is_cpu_updated); // Read-only trxs are never billed (objective or subjective): they don't change chain state, // they may legitimately have zero authorizations, and any accounts_billing accumulation here @@ -714,8 +749,8 @@ namespace sysio::chain { // type) are objectively billed to sysio but skip the subjective path -- they're chain-generated, // never appear in block->transactions (so on_block() can't clear a subjective entry), and the // sysio authorizer doesn't need subjective throttling. - const bool bill_objectively = !is_read_only(); - const bool bill_subjectively = bill_objectively && !is_implicit(); + const bool bill_objectively = !is_read_only(); + const bool billed_subjectively = bill_objectively && !is_implicit(); account_subjective_cpu_bill_t authorizers_cpu; const bool subjectively_bill_payer_disabled = control.get_subjective_billing().is_payer_billing_disabled(); @@ -735,7 +770,7 @@ namespace sysio::chain { bill_receiver(e, cpu); // Subjectively, the input action's first authorizer is billed, as for the input entry, and not twice // when it is the receiver and payer billing bills it as a payer. - if (bill_subjectively) { + if (billed_subjectively) { const account_name first_auth = input_first_authorizer(e.input); if (first_auth != e.account || subjectively_bill_payer_disabled) authorizers_cpu[first_auth] += fc::microseconds{cpu}; @@ -765,7 +800,7 @@ namespace sysio::chain { if (bill_objectively) { auto payer = act_trace.act.payer(); accounts_billing[payer].cpu_usage_us += b.value; - if (bill_subjectively) { + if (billed_subjectively) { auto first_auth = input_first_authorizer(i); // validate_referenced_accounts rejects non-read-only, non-implicit trxs with zero // auths (tx_no_auths), so first_auth must be populated by here on the subjective path. @@ -784,22 +819,35 @@ namespace sysio::chain { } trace->total_cpu_usage_us = total_cpu_time_us; - if (bill_subjectively) { - auto& subjective_bill = control.get_mutable_subjective_billing(); - if( trace->except ) { - const fc::exception& e = *trace->except; - if( !exception_is_exhausted( e ) && e.code() != tx_duplicate::code_value) { - subjective_bill.subjective_bill_failure(accounts_billing, authorizers_cpu, control.pending_block_time()); - } - } else { - // if producing then trx is in objective cpu account billing. Also no block will be received to remove the billing. - if (!control.is_producing_block()) { - subjective_bill.subjective_bill(packed_trx.id(), packed_trx.expiration(), accounts_billing, authorizers_cpu); - } + is_cpu_updated = true; + return authorizers_cpu; + } + + void transaction_context::unbill_cpu( cpu_usage_t measured_cpu_us, accounts_billing_t unbilled ) { + assert(!explicit_billed_cpu_time); + // A failed transaction gets no receiver entries, so its traces carry no receiver CPU either. + for (const auto& e : receiver_entries) + trace->action_traces[e.ordinal - 1].cpu_usage_us.reset(); + billed_cpu_us = std::move(measured_cpu_us); + accounts_billing = std::move(unbilled); + is_cpu_updated = false; + } + + void transaction_context::bill_subjectively( const account_subjective_cpu_bill_t& authorizers_cpu ) { + // Read-only and implicit trxs are not billed subjectively; see bill_cpu(). + if (is_read_only() || is_implicit()) + return; + auto& subjective_bill = control.get_mutable_subjective_billing(); + if( trace->except ) { + const fc::exception& e = *trace->except; + if( !exception_is_exhausted( e ) && e.code() != tx_duplicate::code_value) { + subjective_bill.subjective_bill_failure(accounts_billing, authorizers_cpu, control.pending_block_time()); } + } else if (!control.is_producing_block()) { + // if producing then trx is in objective cpu account billing. Also no block will be received to remove the + // billing. + subjective_bill.subjective_bill(packed_trx.id(), packed_trx.expiration(), accounts_billing, authorizers_cpu); } - - is_cpu_updated = true; } uint32_t transaction_context::billed_cpu_sum() const { @@ -831,10 +879,8 @@ namespace sysio::chain { void transaction_context::bill_receiver( const receiver_entry& e, uint32_t cpu_us ) { // A receiver pays CPU only: its NET window is neither updated nor checked. - accounts_billing.try_emplace(e.account, account_billing{ .cpu_limit_us = e.cpu_limit_us, - .cpu_greylisted = e.cpu_greylisted, - .pays_net = false }) - .first->second.cpu_usage_us += cpu_us; + auto& bill = accounts_billing.try_emplace(e.account, account_billing{ .pays_net = false }).first->second; + bill.cpu_usage_us += cpu_us; } account_name transaction_context::input_first_authorizer( uint32_t input ) const { diff --git a/unittests/receiver_cpu_billing_tests.cpp b/unittests/receiver_cpu_billing_tests.cpp index eb2360ed50..271c6b339e 100644 --- a/unittests/receiver_cpu_billing_tests.cpp +++ b/unittests/receiver_cpu_billing_tests.cpp @@ -10,6 +10,7 @@ #include +#include #include using namespace sysio; @@ -22,6 +23,7 @@ namespace { constexpr account_name token_account = "sysio.token"_n; constexpr account_name msig_account = "sysio.msig"_n; constexpr account_name system_receiver = "sysio.cpurcv"_n; ///< cpu_receiver_test on a privileged sysio account +constexpr account_name unprivileged = "sysio.unpriv"_n; ///< cpu_receiver_test on a sysio account not privileged constexpr account_name alice = "alice"_n; ///< plain account that issues the token constexpr account_name bob = "bob"_n; ///< plain account constexpr account_name carol = "carol"_n; ///< plain account given no CPU and no NET @@ -29,6 +31,7 @@ constexpr account_name game = "game"_n; ///< contracts runnin constexpr account_name winner = "winner"_n; constexpr account_name relay = "relay"_n; constexpr account_name idle = "idle"_n; ///< contract given no CPU +constexpr action_name setalimits = "setalimits"_n; ///< sysio.bios: sets an account's resource limits constexpr const char* max_supply = "1000000.0000 TKN"; constexpr const char* issued = "2000.0000 TKN"; @@ -43,6 +46,10 @@ constexpr uint8_t small_max_cpu_usage_ms = 5; constexpr const char* receipt_has_extra_entry = "is more than the expected"; constexpr const char* receipt_mismatch = "receipt does not match"; constexpr const char* account_cpu_limit_reached = "reached account cpu limit"; +constexpr const char* idle_over_its_limit = "billable CPU time for the account idle"; +constexpr const char* idle_over_greylisted_limit = "greylisted billable CPU time for the account idle"; +constexpr const char* greylisted_frame_stopped = "greylisted transaction"; +constexpr const char* trx_max_cpu_reached = "reached trx specified max_cpu_usage_ms"; constexpr const char* spun = "spun"; ///< what cpu_receiver_test::spin prints constexpr int64_t beyond_any_leeway_us = 10'000'000; ///< more than the subjective CPU leeway constexpr uint32_t pending_bill_lifetime_sec = 3600; @@ -60,7 +67,8 @@ uint64_t total( const std::vector& entries ) { /// Contracts reached through system contracts pay CPU for their own code; see transaction_context::begin_frame. struct receiver_cpu_tester : validating_tester { receiver_cpu_tester() { - create_accounts( { token_account, msig_account, system_receiver, alice, bob, carol, game, winner, relay, idle } ); + create_accounts( + { token_account, msig_account, system_receiver, unprivileged, alice, bob, carol, game, winner, relay, idle } ); produce_block(); set_code( token_account, test_contracts::sysio_token_wasm() ); @@ -69,12 +77,12 @@ struct receiver_cpu_tester : validating_tester { set_code( msig_account, test_contracts::sysio_msig_wasm() ); set_abi( msig_account, test_contracts::sysio_msig_abi() ); set_privileged( msig_account ); - for( auto contract : { system_receiver, game, winner, relay, idle } ) { + for( auto contract : { system_receiver, unprivileged, game, winner, relay, idle } ) { set_code( contract, test_contracts::cpu_receiver_test_wasm() ); set_abi( contract, test_contracts::cpu_receiver_test_abi() ); } set_privileged( system_receiver ); - for( auto account : { alice, game, winner, relay } ) + for( auto account : { alice, game, winner, relay, unprivileged } ) set_cpu_weight( account, cpu_weight ); set_cpu_weight( idle, 0 ); produce_block(); @@ -88,21 +96,36 @@ struct receiver_cpu_tester : validating_tester { produce_block(); } - /// Sets `account`'s NET and CPU weights through sysio.bios, keeping its RAM. - void set_weights( account_name account, int64_t net_weight, int64_t cpu_weight ) { + /// sysio.bios setalimits data giving `account` these NET and CPU weights, keeping its RAM. + mvo weights( account_name account, int64_t net_weight, int64_t cpu_weight ) const { int64_t ram_bytes = 0, current_net_weight = 0, current_cpu_weight = 0; control->get_resource_limits_manager().get_account_limits( account, ram_bytes, current_net_weight, current_cpu_weight ); - push_action( config::system_account_name, "setalimits"_n, config::system_account_name, - mvo()( "account", account )( "ram_bytes", ram_bytes )( "net_weight", net_weight ) - ( "cpu_weight", cpu_weight ) ); + return mvo()( "account", account )( "ram_bytes", ram_bytes )( "net_weight", net_weight ) + ( "cpu_weight", cpu_weight ); + } + + int64_t net_weight_of( account_name account ) const { + int64_t ram_bytes = 0, net_weight = 0, cpu_weight = 0; + control->get_resource_limits_manager().get_account_limits( account, ram_bytes, net_weight, cpu_weight ); + return net_weight; + } + + /// Sets `account`'s NET and CPU weights through sysio.bios, keeping its RAM. + void set_weights( account_name account, int64_t net_weight, int64_t cpu_weight ) { + push_action( config::system_account_name, setalimits, config::system_account_name, + weights( account, net_weight, cpu_weight ) ); } /// Sets `account`'s CPU weight, keeping its RAM and NET. void set_cpu_weight( account_name account, int64_t weight ) { - int64_t ram_bytes = 0, net_weight = 0, current_cpu_weight = 0; - control->get_resource_limits_manager().get_account_limits( account, ram_bytes, net_weight, current_cpu_weight ); - set_weights( account, net_weight, weight ); + set_weights( account, net_weight_of( account ), weight ); + } + + /// The sysio.bios action that sets `account`'s CPU weight, keeping its RAM and NET. + action cpu_weight_action( account_name account, int64_t weight ) { + return get_action( config::system_account_name, setalimits, auth( config::system_account_name ), + weights( account, net_weight_of( account ), weight ) ); } /// Authorizes `actor`, naming it the explicit payer too when asked. @@ -271,7 +294,7 @@ BOOST_FIXTURE_TEST_CASE( authorizer_without_cpu_or_net_is_billed_nothing, receiv BOOST_FIXTURE_TEST_CASE( contract_without_cpu_receives_only_from_an_explicit_payer, receiver_cpu_tester ) try { BOOST_CHECK_EXCEPTION( transfer( alice, idle, amount, spin_memo ), tx_cpu_usage_exceeded, - fc_exception_message_contains( "billable CPU time for the account idle" ) ); + fc_exception_message_contains( idle_over_its_limit ) ); auto before = cpu_windows( { token_account, alice, idle } ); auto trace = transfer( alice, idle, amount, spin_memo, true ); @@ -338,7 +361,7 @@ BOOST_FIXTURE_TEST_CASE( explicit_payer_pays_for_everything_below_it, receiver_c trx.max_cpu_usage_ms = small_max_cpu_usage_ms; sign( trx ); BOOST_CHECK_EXCEPTION( push_measured( trx, fc::time_point::now() + fc::seconds( 10 ) ), tx_cpu_usage_exceeded, - fc_exception_message_contains( "reached trx specified max_cpu_usage_ms" ) ); + fc_exception_message_contains( trx_max_cpu_reached ) ); produce_block(); } FC_LOG_AND_RETHROW() @@ -474,6 +497,69 @@ BOOST_FIXTURE_TEST_CASE( failed_transaction_bills_no_receiver, receiver_cpu_test produce_block(); } FC_LOG_AND_RETHROW() +BOOST_FIXTURE_TEST_CASE( transaction_failing_its_final_checks_bills_no_receiver, receiver_cpu_tester ) try { + auto& sub_bill = control->get_mutable_subjective_billing(); + transaction_trace_ptr failed; + auto connection = control->applied_transaction().connect( + [&]( std::tuple x ) { + if( std::get<0>( x )->except ) + failed = std::get<0>( x ); + } ); + + // Both handlers run to the end, and then idle, which has no CPU, fails the final checks. The transaction is billed + // as a failed one: its CPU stays on the input actions, and neither receiver is billed. + for( bool speculative : { false, true } ) { + for( bool payer_billing_disabled : { true, false } ) { + BOOST_TEST_CONTEXT( "speculative " << speculative << ", payer billing disabled " << payer_billing_disabled ) { + sub_bill.reset(); + sub_bill.disable_payer_billing( payer_billing_disabled ); + if( speculative ) + start_speculative_block(); + const auto now = control->pending_block_time(); + failed.reset(); + auto trx = make_trx( { transfer_action( alice, game, amount, spin_memo ), + transfer_action( alice, idle, amount, "" ) } ); + BOOST_CHECK_EXCEPTION( push_measured( trx ), tx_cpu_usage_exceeded, + fc_exception_message_contains( idle_over_its_limit ) ); + BOOST_REQUIRE( failed ); + for( auto receiver : { game, idle } ) + BOOST_TEST_CONTEXT( receiver ) { + BOOST_TEST( !frame( failed, receiver, "transfer"_n ).cpu_usage_us ); + BOOST_TEST( sub_bill.get_subjective_bill( receiver, now ).count() == 0 ); + } + BOOST_TEST( failed->total_cpu_usage_us.value == failed->action_traces[0].cpu_usage_us->value + + failed->action_traces[1].cpu_usage_us->value ); + BOOST_TEST( sub_bill.get_subjective_bill( alice, now ).count() > 0 ); + BOOST_TEST( ( sub_bill.get_subjective_bill( token_account, now ).count() > 0 ) == !payer_billing_disabled ); + if( speculative ) + control->abort_block(); + } + } + } + produce_block(); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( receiver_limit_includes_cpu_granted_in_the_transaction, receiver_cpu_tester ) try { + // idle has no CPU as sysio.token notifies it, and the same transaction grants it CPU, after its handler or before. + // The final checks read idle's limit as the transaction leaves it. + for( bool grant_first : { false, true } ) { + BOOST_TEST_CONTEXT( "grant first " << grant_first ) { + set_cpu_weight( idle, 0 ); + produce_block(); + auto before = cpu_windows( { token_account, alice, idle } ); + vector actions{ transfer_action( alice, idle, amount, "" ), cpu_weight_action( idle, cpu_weight ) }; + if( grant_first ) + std::ranges::reverse( actions ); + auto trace = push_measured( make_trx( std::move( actions ) ) ); + auto receipt = entries( trace ); + BOOST_REQUIRE_EQUAL( receipt.size(), 3u ); + BOOST_TEST( frame( trace, idle, "transfer"_n ).cpu_usage_us->value == receipt[2] ); + check_billed( before, { token_account, idle } ); + produce_and_check_validator( { token_account, alice, idle } ); + } + } +} FC_LOG_AND_RETHROW() + BOOST_FIXTURE_TEST_CASE( receiver_subjective_bill_limits_its_frame, receiver_cpu_tester ) try { auto& sub_bill = control->get_mutable_subjective_billing(); sub_bill.reset(); @@ -627,4 +713,175 @@ BOOST_FIXTURE_TEST_CASE( block_with_wrong_receipt_entry_count_is_rejected, recei transaction_exception, fc_exception_message_contains( receipt_has_extra_entry ) ); } FC_LOG_AND_RETHROW() +BOOST_FIXTURE_TEST_CASE( only_a_privileged_sysio_account_is_a_system_receiver, receiver_cpu_tester ) try { + // A privileged sysio.* contract is a system account: its handler stays on sysio.token's entry. + auto before = cpu_windows( { token_account, system_receiver } ); + auto trace = transfer( alice, system_receiver, amount, spin_memo ); + BOOST_TEST( entries( trace ).size() == 1u ); + BOOST_TEST( !frame( trace, system_receiver, "transfer"_n ).cpu_usage_us ); + check_billed( before, { token_account } ); + produce_and_check_validator( { token_account, system_receiver } ); + + // The sysio prefix alone does not make one: an unprivileged sysio.* contract pays for its handler. + before = cpu_windows( { token_account, unprivileged } ); + trace = transfer( alice, unprivileged, amount, spin_memo ); + auto receipt = entries( trace ); + BOOST_REQUIRE_EQUAL( receipt.size(), 2u ); + BOOST_TEST( frame( trace, unprivileged, "transfer"_n ).cpu_usage_us->value == receipt[1] ); + check_billed( before, { token_account, unprivileged } ); + produce_and_check_validator( { token_account, unprivileged } ); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( entries_follow_their_input_actions, receiver_cpu_tester ) try { + auto& sub_bill = control->get_mutable_subjective_billing(); + transfer( alice, bob, "10.0000 TKN", "" ); + produce_block(); + + // Two inputs with different authorizers each reach a contract. The receiver entries follow the input entries in + // the order their frames started, and each is billed subjectively to its own input's first authorizer. + for( bool payer_billing_disabled : { true, false } ) { + BOOST_TEST_CONTEXT( "payer billing disabled " << payer_billing_disabled ) { + sub_bill.reset(); + sub_bill.disable_payer_billing( payer_billing_disabled ); + start_speculative_block(); + const auto now = control->pending_block_time(); + const auto* quantity = payer_billing_disabled ? "1.0000 TKN" : "2.0000 TKN"; + auto trace = push_measured( make_trx( { transfer_action( alice, game, quantity, spin_memo ), + transfer_action( bob, winner, quantity, spin_memo ) } ) ); + auto receipt = entries( trace ); + BOOST_REQUIRE_EQUAL( receipt.size(), 4u ); + BOOST_TEST( frame( trace, game, "transfer"_n ).cpu_usage_us->value == receipt[2] ); + BOOST_TEST( frame( trace, winner, "transfer"_n ).cpu_usage_us->value == receipt[3] ); + BOOST_TEST( sub_bill.get_subjective_bill( alice, now ).count() == receipt[0] + receipt[2] ); + BOOST_TEST( sub_bill.get_subjective_bill( bob, now ).count() == receipt[1] + receipt[3] ); + BOOST_TEST( sub_bill.get_subjective_bill( token_account, now ).count() == + ( payer_billing_disabled ? 0 : receipt[0] + receipt[1] ) ); + BOOST_TEST( sub_bill.get_subjective_bill( game, now ).count() == ( payer_billing_disabled ? 0 : receipt[2] ) ); + BOOST_TEST( sub_bill.get_subjective_bill( winner, now ).count() == + ( payer_billing_disabled ? 0 : receipt[3] ) ); + control->abort_block(); + } + } + + auto before = cpu_windows( { token_account, alice, bob, game, winner } ); + push_measured( make_trx( { transfer_action( alice, game, amount, spin_memo ), + transfer_action( bob, winner, amount, spin_memo ) } ) ); + check_billed( before, { token_account, game, winner } ); + produce_and_check_validator( { token_account, alice, bob, game, winner } ); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( contract_reached_twice_gets_an_entry_each_time, receiver_cpu_tester ) try { + auto& sub_bill = control->get_mutable_subjective_billing(); + sub_bill.reset(); + sub_bill.disable_payer_billing( false ); + start_speculative_block(); + const auto now = control->pending_block_time(); + auto trx = make_trx( { transfer_action( alice, game, amount, spin_memo ), + transfer_action( alice, game, amount, spin_memo ) } ); + auto trace = push_measured( trx ); + auto receipt = entries( trace ); + BOOST_REQUIRE_EQUAL( receipt.size(), 4u ); + BOOST_TEST( frame( trace, game, "transfer"_n, 0 ).cpu_usage_us->value == receipt[2] ); + BOOST_TEST( frame( trace, game, "transfer"_n, 1 ).cpu_usage_us->value == receipt[3] ); + BOOST_TEST( sub_bill.get_subjective_bill( game, now ).count() == receipt[2] + receipt[3] ); + control->abort_block(); + + auto before = cpu_windows( { token_account, game } ); + push_measured( trx ); + check_billed( before, { token_account, game } ); + produce_and_check_validator( { token_account, alice, game } ); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( receiver_that_pays_for_another_input_is_billed_once, receiver_cpu_tester ) try { + auto& sub_bill = control->get_mutable_subjective_billing(); + sub_bill.reset(); + sub_bill.disable_payer_billing( false ); + start_speculative_block(); + const auto now = control->pending_block_time(); + // The game pays for its own spin, an input, and for its transfer handler, a receiver entry. + auto spin = get_action( game, "spin"_n, auth( game ), mvo()( "n", spin_count ) ); + auto trx = make_trx( { spin, transfer_action( alice, game, amount, spin_memo ) } ); + auto trace = push_measured( trx ); + auto receipt = entries( trace ); + BOOST_REQUIRE_EQUAL( receipt.size(), 3u ); + BOOST_TEST( frame( trace, game, "transfer"_n ).cpu_usage_us->value == receipt[2] ); + BOOST_TEST( sub_bill.get_subjective_bill( game, now ).count() == receipt[0] + receipt[2] ); + control->abort_block(); + + // It pays NET for its input only, which the validator's windows confirm. + auto before = cpu_windows( { token_account, game } ); + auto game_net = usage( *control, game ).net_usage; + push_measured( trx ); + check_billed( before, { token_account, game } ); + BOOST_TEST( !same_window( usage( *control, game ).net_usage, game_net ) ); + produce_and_check_validator( { token_account, alice, game } ); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( explicit_payer_covers_only_its_own_action, receiver_cpu_tester ) try { + // alice pays explicitly for the first input and everything below it; the second input switches as usual. + auto before = cpu_windows( { token_account, alice, game, winner, relay } ); + auto trace = push_measured( make_trx( { transfer_action( alice, game, amount, "pay:winner", true ), + transfer_action( alice, relay, amount, "forward:winner" ) } ) ); + auto receipt = entries( trace ); + BOOST_REQUIRE_EQUAL( receipt.size(), 3u ); + BOOST_TEST( !frame( trace, game, "transfer"_n ).cpu_usage_us ); + BOOST_TEST( frame( trace, relay, "transfer"_n ).cpu_usage_us->value == receipt[2] ); + check_billed( before, { token_account, alice, relay } ); + produce_and_check_validator( { token_account, alice, game, winner, relay } ); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( receiver_frame_stops_at_the_transaction_limit, receiver_cpu_tester ) try { + // The game has ample CPU, so its frame stops at the transaction's max_cpu_usage_ms, reported as such. + auto trx = make_trx( { transfer_action( alice, game, amount, "forever" ) } ); + trx.max_cpu_usage_ms = small_max_cpu_usage_ms; + sign( trx ); + BOOST_CHECK_EXCEPTION( push_measured( trx, fc::time_point::now() + fc::seconds( 10 ) ), tx_cpu_usage_exceeded, + fc_exception_message_contains( trx_max_cpu_reached ) ); + produce_block(); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( greylisted_receiver_fails_as_greylisted, receiver_cpu_tester ) try { + // On a speculative block, a greylisted contract with no CPU fails as greylisted, both while its frame runs and in + // the final checks. + control->add_resource_greylist( idle ); + start_speculative_block(); + const auto deadline = fc::time_point::now() + fc::seconds( 10 ); + BOOST_CHECK_EXCEPTION( push_measured( make_trx( { transfer_action( alice, idle, amount, "forever" ) } ), deadline ), + greylist_cpu_usage_exceeded, fc_exception_message_contains( greylisted_frame_stopped ) ); + BOOST_CHECK_EXCEPTION( push_measured( make_trx( { transfer_action( alice, idle, amount, "" ) } ), deadline ), + greylist_cpu_usage_exceeded, fc_exception_message_contains( idle_over_greylisted_limit ) ); + control->abort_block(); + control->remove_resource_greylist( idle ); + produce_block(); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( receiver_code_is_read_as_its_frame_starts, receiver_cpu_tester ) try { + const auto wasm = test_contracts::cpu_receiver_test_wasm(); + auto set_code_action = [&]( account_name account, bytes code ) { + return action( auth( account ), setcode{ .account = account, .code = std::move( code ) } ); + }; + + // Code set earlier in the transaction counts: bob, a plain account, pays for the handler it just got. + set_cpu_weight( bob, cpu_weight ); + produce_block(); + auto before = cpu_windows( { token_account, bob } ); + auto trace = push_measured( make_trx( { set_code_action( bob, bytes( wasm.begin(), wasm.end() ) ), + transfer_action( alice, bob, amount, spin_memo ) } ) ); + auto receipt = entries( trace ); + BOOST_REQUIRE_EQUAL( receipt.size(), 3u ); + BOOST_TEST( frame( trace, bob, "transfer"_n ).cpu_usage_us->value == receipt[2] ); + check_billed( before, { token_account, bob } ); + produce_and_check_validator( { token_account, alice, bob } ); + + // Code cleared earlier in the transaction counts too: relay has none left to pay for. + before = cpu_windows( { token_account, relay } ); + trace = push_measured( make_trx( { set_code_action( relay, bytes{} ), + transfer_action( alice, relay, amount, spin_memo ) } ) ); + receipt = entries( trace ); + BOOST_TEST( receipt.size() == 2u ); + BOOST_TEST( !frame( trace, relay, "transfer"_n ).cpu_usage_us ); + check_billed( before, { token_account } ); + produce_and_check_validator( { token_account, alice, relay } ); +} FC_LOG_AND_RETHROW() + BOOST_AUTO_TEST_SUITE_END() From e2814b14c10f8c8254ea843079a97e4d56f8cf90 Mon Sep 17 00:00:00 2001 From: Kevin Heifner Date: Tue, 10 Nov 2026 13:54:27 -0500 Subject: [PATCH 4/6] Cover the start of a notified contract's code with an on-chain stipend MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The entry that pays for a frame now also pays for the first `notify_cpu_stipend` microseconds of a contract the frame notifies. The contract's entry holds only its CPU past that. `notify_cpu_stipend` is a new `chain_config` parameter: - genesis default 100 µs; - changed through `setparams`; - 0 means no stipend; - at most `max_transaction_cpu_usage`; - appended as id 17, so no existing id moves. A switch gets one stipend, shared by every frame billed to the contract's entry. An action sent to a contract, such as through `sysio.msig::exec`, gets none, just as calling the contract directly gets none. The receipt format is unchanged. A contract whose code stays within the stipend has an entry of 0, and an entry of 0 bills nothing. Only the producer applies the stipend: validators bill the receipt's entries as given. A notified frame runs for what is left of the stipend, then for the contract's remaining CPU. On sys-vm-oc, a compile on a code-cache miss now pauses billing, as module instantiation already does on the other runtimes, so a contract's first run is not billed for loading its module. `sysio.system` packs the new parameter. `sysio.bios`, `sysio.system`, `params_test` and `cpu_receiver_test` are rebuilt with the matching wire-cdt, and SHiP's `chain_config` gains the field. `cpu_receiver_test` drops its context-free inline, which master removed, and gains `spinsend:`. The msig test proposes with `sysio.payer`, as master now requires. The trace_api docs say that `cpu_usage_us` also appears on receiver frames. The deep-mind log, the snapshot compatibility files, the consensus blockchain data and the sys-util snapshot info expectations are regenerated. Change-Id: Iba358c8dec580c897389828eeff54d66f70761d7 --- contracts/sysio.bios/sysio.bios.abi | 4 + contracts/sysio.bios/sysio.bios.wasm | Bin 41934 -> 42006 bytes contracts/sysio.system/src/sysio.system.cpp | 6 +- contracts/sysio.system/sysio.system.abi | 4 + contracts/sysio.system/sysio.system.wasm | Bin 222831 -> 223596 bytes contracts/tests/sysio.system_tester.hpp | 1 + contracts/tests/sysio.system_tests.cpp | 3 +- libraries/chain/chain_config.cpp | 2 + .../include/sysio/chain/chain_config.hpp | 22 +- .../chain/include/sysio/chain/config.hpp | 2 + .../include/sysio/chain/genesis_state.hpp | 4 +- .../sysio/chain/transaction_context.hpp | 32 +- .../webassembly/sys-vm-oc/code_cache.hpp | 3 + libraries/chain/transaction_context.cpp | 45 +- .../chain/webassembly/runtimes/sys-vm-oc.cpp | 11 +- .../runtimes/sys-vm-oc/code_cache.cpp | 18 +- libraries/state_history/abi.cpp | 3 +- .../sysio/state_history/serialization.hpp | 1 + plugins/trace_api_plugin/trace_api_plugin.md | 2 +- tests/PerformanceHarness/genesis.json | 3 +- tests/TestHarness/launcher.py | 3 +- tests/chain_plugin_tests.cpp | 1 + tests/sysio_util_snapshot_info_test.py | 4 +- tutorials/bios-boot-tutorial/genesis.json | 3 +- unittests/deep-mind/deep-mind.log | 392 +++++++------- unittests/params_tests.cpp | 2 + unittests/receiver_cpu_billing_tests.cpp | 491 ++++++++++++++---- unittests/snapshots/blocks.index | Bin 232 -> 232 bytes unittests/snapshots/blocks.log | Bin 139818 -> 140809 bytes unittests/snapshots/snap_v1.bin.gz | Bin 54196 -> 54445 bytes unittests/snapshots/snap_v1.bin.json.gz | Bin 92573 -> 92838 bytes unittests/snapshots/snap_v1.json.gz | Bin 92269 -> 92542 bytes unittests/sysio_system_tester.hpp | 1 + unittests/system_host_tests.cpp | 6 +- .../cpu_receiver_test/cpu_receiver_test.abi | 19 - .../cpu_receiver_test/cpu_receiver_test.cpp | 29 +- .../cpu_receiver_test/cpu_receiver_test.hpp | 7 +- .../cpu_receiver_test/cpu_receiver_test.wasm | Bin 8475 -> 8240 bytes .../params_test/params_test.abi | 10 + .../params_test/params_test.cpp | 34 +- .../params_test/params_test.wasm | Bin 17073 -> 18599 bytes .../consensus_blockchain/blocks.index | Bin 136 -> 136 bytes .../test-data/consensus_blockchain/blocks.log | Bin 57156 -> 57258 bytes unittests/test-data/consensus_blockchain/id | Bin 32 -> 32 bytes .../test-data/consensus_blockchain/snapshot | Bin 2147935 -> 2148037 bytes 45 files changed, 775 insertions(+), 393 deletions(-) diff --git a/contracts/sysio.bios/sysio.bios.abi b/contracts/sysio.bios/sysio.bios.abi index c1d99df7bd..a05379a321 100644 --- a/contracts/sysio.bios/sysio.bios.abi +++ b/contracts/sysio.bios/sysio.bios.abi @@ -153,6 +153,10 @@ { "name": "max_kv_secondary_key_size", "type": "uint32" + }, + { + "name": "notify_cpu_stipend", + "type": "uint32" } ] }, diff --git a/contracts/sysio.bios/sysio.bios.wasm b/contracts/sysio.bios/sysio.bios.wasm index 02879f69800682284c3e3e0e9c29795072715cab..440826d61f41a399cf80fdbfd88b42a28ffe2e5e 100755 GIT binary patch delta 70 zcmV-M0J;Cp#{!nf0iIc)!iL+E+!bH1f7WDuC diff --git a/contracts/sysio.system/src/sysio.system.cpp b/contracts/sysio.system/src/sysio.system.cpp index 1a2fc994f6..be04a1b4e1 100644 --- a/contracts/sysio.system/src/sysio.system.cpp +++ b/contracts/sysio.system/src/sysio.system.cpp @@ -52,7 +52,7 @@ namespace sysiosystem { #ifndef SYSTEM_BLOCKCHAIN_PARAMETERS set_blockchain_parameters( params ); #else - constexpr size_t param_count = 17; + constexpr size_t param_count = 18; // an upper bound on the serialized size char buf[1 + sizeof(params) + param_count]; datastream stream(buf, sizeof(buf)); @@ -77,7 +77,9 @@ namespace sysiosystem { << uint8_t(13) << params.max_action_return_value_size << uint8_t(14) << params.max_kv_key_size << uint8_t(15) << params.max_kv_value_size - << uint8_t(16) << params.max_kv_secondary_key_size; + << uint8_t(16) << params.max_kv_secondary_key_size + + << uint8_t(17) << params.notify_cpu_stipend; set_parameters_packed(buf, stream.tellp()); #endif diff --git a/contracts/sysio.system/sysio.system.abi b/contracts/sysio.system/sysio.system.abi index a12dd058ba..7be6b42c05 100644 --- a/contracts/sysio.system/sysio.system.abi +++ b/contracts/sysio.system/sysio.system.abi @@ -291,6 +291,10 @@ { "name": "max_kv_secondary_key_size", "type": "uint32" + }, + { + "name": "notify_cpu_stipend", + "type": "uint32" } ] }, diff --git a/contracts/sysio.system/sysio.system.wasm b/contracts/sysio.system/sysio.system.wasm index 80e987234ebf76ef0b93f99f4829b896d678d7ff..04a8a9e6774a4d05c8fcf08b15cac4cae4bdca6e 100755 GIT binary patch delta 30288 zcmbtd2VfM{*4}exOF|Mdl=Q-GNJ8kL7g1QG7byxN0)mPqh)7dGA))s=ghMZafFKYE zvUEa~Cej3?ND-tr=_vSr_s(t-g!g>!f6vFx%$-}$J^h?Jxv?kc>Vcq)5Xxg|Z%gf) znwm zEz)X@)RN+jj~qo}6Eux%@_$zOAO0UEU!urr3$rE|%Nzx)2{v@K!x2Xb#uZ0N5g%_v z`W22yko74H?QPb$I9VS(<38SK=~prdZ8Ve-Ix239kIQG(3fgQ`kP6!pTyi|C%@#?T z7H=%_i*67fMnqafp*XaOv_{I`$U@E{TD*S%X@r;Y=p2i(MQSdsP^2cXAWR!$+caxF zYgmF!BNB-Taq&hz{}_rlO8XZs6K~B|%8KriH5=~HG*X}=o0bn3G>f(-XtD$RD^UUq z3`;Nu_*eGZHNG=SEKwPKxEFE)sc;;i^poD;u^ z3*w@9bC5PzYdb`nWSwlCVx4B4Zk=J>WBb9j*S62L-xhzscF=an_LJ?f?TGEDEzhdc zfx8{~EP6HlQ@xk|h2BR`)%zQqr&z5$)5vLY>z~F^N}Q-D@aVRX%lmK1kz ziu;qUah8g*MAUE!x8B2PX&8h`xTh4^#IOZa&FM&_#A$!)2t)WfvidsGWJgxBBhA;* zfPmKZv*Z+<=74TXb=+W50W-19sqTH#NUtPn$O#^m6T~!5Pa~IxIpbPU76ynKW`z?* zVqlS2lvEUQvY3;6>$bRTc(SSyPZ*s7U9`^_75I?OWey426+#y?n-}gasFU$S!We31 zv`sAUdNnNCZ4VbCwirv-#imLiTJhE|#iapU zn5dsqbaHDAB*fe!wpetm4Sl#ofKxa%w^g@BI?W=tRc(Q69r*ukovH@c|G&*u>w^D7 z>r`@w{}0W{9sNJGcBcMM&Ex;4)=6lc`v2ea693cS$!6XBZvWpke|EEz{!ZcK-U{CLG?hyZVJuE; zNv92KkvMukvq+JFM7NA@lYWc(!0B*fN^uUSRyW8J04Cvfg3km8=p&59MK92Z%=BUx zt<)v6Z|OBeJu<75*(jp^oI!5tsyGZ)waBNN_;)YMqJL%-C_lH7e4?(kWrZa1U# zfPiF+WRoQ=BWLDrE1%NvZ^!qt?e+4ZRpnE5+o3a`YCG+zw(@B#{vDTXBi%0JR`~)| zWkGiHNl!Qb_NnIbX%_x%*rA%o$>yoDAiMbjv-to>?9{^G_?Av_mU!mO z?~s*rs|y09rlpd|KplXfqF99+`GA*cC`uA5P+vV-BTey#0?FVZtyau5oE4ikLiIRO z5OhMIsQMC$-7ystj(gA|XAk6)#hqo%EGy*Yj+w@~ilxQYnZ~t>;W}RB z>KBC}mEviTQMFQ|kijJJ%YBAYN?I&xX!ndOMyV>%hNn_g?2Ic)l(@49lBtr0?n_$E zm@{+_yK3C5lthD#h{{dqC*#A)ZK$KMz4EL7vdbiao?BI^5iRY>xB+PV~yk0;%HpvlWHZ1#v8?7Dj8vr zQ*&A&?u0u7vlS4I?!OLM^a)1SmqIAr81m9v_`UE_3)*J9SiK}oZ+nCOVn#{EM0RRMtbDN$@uq8N|X6#bg9)LoWN8E4(EN1PUs02}6Iai`V^LM=I( zwVR%9G_P46UGG0ALh?@pdN|2xcaIb)a&G!jV@b_0`q|iCvoIaXyj-(1QFkM<)|>R9 zF|I`vO*Y2YDozuP4Yk7PE8}pjcW7#6)!HQ~bUH;kHQ<)!2U#ACzA&0T-RM&%UN9LQ zMuiz`>Nv&p+eXF*@#E|EE1g}x6{=pf$OcC(XyNOoX?F2GS!`s~EkiSnvvu7x-H5N} z)@P9`09C?Mq(b7*XB$21#Q|!Q>XpH~cGZi)@5OqF`Q}J;24LpOtDd5NZ4|0sHa6?| z(Axx6#1il}@83Yh?e6f-`ewoIo>WGU0&PiUMIxWmqVF`$)Gs2}lBYq9pv9OmNiYZM z3k26VLXq^%_)U?<$Oh55-_7&Bn{VuEz&X$g#~Mn=#fK|sHB7+r>c3Ld*wfI7)m&@1 zIHzh7YE_d}lN3A}70h`hdr_}cFUJ}sq8DmhU-eLo^EMK8A>IvM-QH|VfxlW1CKyxycm@FLm7tcy+l)>zx56HPLTH0_pq!App{jHh@B zraeuY(8A2>&OV#?kFTYZ5gPJ6wOF~3!^_}2Gg2ns)cqqZD);~O=|Grn~#^S-pd9o<1b z=^mqR>(gS1+2XS|KN9J8jPq~a44#v-oDwPe9BkcJqz4M_jbvFYthM5yk%YH;dX^dqzm4=OgK3sQ@mn)aj>*8sr?dgj=CL& z0}cl|#9@+|_d2{qiBrIF+&3vj-ym-uV7?nAGZQ8wMG<(ro@KaGBaQTTng{I_ZsDRp z0v+f-8h74#GiZOVk^@GYcWcqX%-QdDp~R_jvKM_l-+Z=bNzP`^P2U?<#@y>elFPWW zM2fyefyaDa^|$8?`D|<$;xfk0pK0uRe`JiBefAi(?Ae=Rv>O#^JQ-j&j1QvZ?qq!M z4UkqJX&6homol2peZSoB{|E{cDLIOq%yx?8{mCNC*ppHy2d6Fi_aq5C)X3W@j&>Mj zIwb*-TX!l?zZ+vZRR#Qab*c%33Hqo|UXv@RtqatT7*#(S4b;q;QXAv9&U)GRFx)@x zP0p-#`(~wgvm3QPj>tW;JvlQIKM-g2rU+xh$H8>p*!yvHdSK-3GSQq_fv0A62%O8U z8zXx3lW%(_(2qvyClRzIvvJQ#lsN1^0-Hh}y<4mVeR8+i&vaCS%`-i;%M2yvzY3528*1A)=N&IU#}ve5=@$VpeFHk ztHfGxfBlfLp;yg(Ci^pAtpv9Gl$o!0MM~WNpAp1cBVvrk7irl0O z(Vsv7Y3^iW%m?BAq&xy{ETz+z3aEW5dM9;95z#(#Qhva$H~Q4}PRe|>K}~9DpQ@C2 zKu+o(am)x#Ed%s*r#31q*%o{R$^_Sk!r@axsu#LXg@7ncH!@Po2BcFY<_*>E=sn|F z>L{9?sgEp7#TEG+eEy(0WNR{=cB7oerG6Q7ESuC@4|q56hv$Par*UqY4|4kiyt+af zscWG33Q4A(3wo~*kLo$vdv)S!G#Z$SJ>N6%Wm;tDgXC|!#V%uCpIJu8;O>dPTmK^f z%3a+(cnLbv2UQtAJP$3(+%TjRCHAxZhs`S)^@mB^%hkNnKM~GbBQg}+lPGcE^NAz} zYCe!phOL#ax68#`h8>CIRC$q=d*1hjrL>gsRlv!aS~KCrAq$yke2P@y^x0v zqjo}yMp>Q=GLqM_-fMYpd1ddlT1r8)Viu%|Y5{8!n|E`}fTvJz=zj_ar*U>%zkH@t zQuOWifNC-_XDy2%W1JEDk0Qru1kC~0%!T%2{?oBt#>w!tx`MjZ^?6h+>jB5qd*GJ30+-ZPqL4zi9k@{? z(!@|Vax`@#7pUr-_1&DqO(j+Io3H4i?*{gZiIh@BQFZS4N*>4(!!rA#X?R~bAu&^{yUb>_|KbOnOH1kr63+213bb)h9?C!wSwq&+j zT#;(sqc~u1QEi9NS2&z@{l2P}h6+ku9SYs}Z_2hrk1SK6gXSw6NHsIuxVglYo01=x zl-C?Tu z##gI9FcC6!K+beFc*UaXAM;VyT=P)#g2JJ$n2);Vnvbdv)}*dk0NEtD0LhwEiDXUc zM$Sjw091|5N|HCJ+LAY^8_Al~jfB0rk*rA#DREDgNYgZ5tYH ze6iL|gL!r=g+~h+c?txmHGK$HEB!gxfxr|u=|eMbt@WdX!OFn|w+OUDxM=ke0uD2R z<(Q88xJtjvL?d?n85%KuLkNvDLN|Oyqm0oThQf0ewlNjHG2U2~yaUF12h@C{Fx+JD zs$gU&1Cz#YssT5ids8^tw%#;~rWhADb;fVY%_Ry?!FY%;ro>s?F6k?l?7;1Ul`pT* zIA(}QKGQ@*8((kA&%sSaLF2;aWb_ukWh{F5W=jeD9^O(T68#9J?pl;5QmY{m&8dN# z7|B~pgMqi-+MH;vasEJ}81l3QUe#ai4fZkJ7`eSWEgb)STtT0vq^>}TpD19las1=L z#v9)U!%qM3dk&Xoh8#rsk6?}AUM}}1BYejuXrgJ?3L4jUl%j7lV|HF7T4LCDm$WZM zxD5W0-8U;4pX_c!%Z#^fy-CY6i|$DwTAexJhpL)uF`*wI<8+F{{`jdtTb$O(T`1eA zxUsK1d5rk|HT*MV-7;VjM(6$UwmrhV@GlO&O%*fu><=gU;h$E!;ow9B4qF`B9HEd3 zd#{Oh}KR+fvoC0GlhX7Sr6*^y4BD<6;?qT2iu| zw2;b@JdK;DiWrBEwE>$ib9`VZytIhbRun@8uAoC}QLP3@YxnWa1<&4)lfkUk-BPo% zxyM@h=I<0~yDr>gPN<#aZav9G7kTCjBGmZ#L@=GmymTTT(G}y5lW&QWg3H8cuDt86 zs}8JADa%e8BYr7KzZk23iGe%$$S>DmHf%dpjM6i2o~loD#;AIxmsoMb`0mWBn4|w$ zCtWg%ovlfijm~EarA{Z81R!QCc{OB&iRFrgC_CCjbjj@`hN7y&6jFd`NsGg6saw@j z4=u^P2UQl4!U3;}1xTAJnyG#H1_F+w8(G_zOu~&K+F9}@v-7XZiOy#_&%Y>WwbAZEV>)DfdjSrg%nKJXiEbEE zFSVwd#=T2lL)V^m`SqBQk|8OFG1!m#qUqgVQs&}d*kN-<_-Bnbc{6(y0H3m9zF zyi)IVUxkvEdQ~lw4NKk&wFXTjOlHU%DH0UXNth`9W3qj3*T5@p-`VX48)vSBfKV0F zQK&Z2doQ7rZUkQqt**w9%8Tk+0!Q6Q;HVo397Wm^I8RZrjLiwYI*FoX)7 z5nM6X8u{IkJnOEAG~V1BLLm zul$7hXe35xM#}fS zje`%0Madd4@UmIH>{u~q$@L#D6eBgmvAcw06l^Mev}WwNSy8fiF-9}m-)b$!YMI6M zyhuj;pVP&7&FFWnfbr&^!N!`K0c2#}`m+hq*O~4oEr{6QzbgAplD$mU6x_cHq+&!< z7?G>3{tEM<4ozpPpjXMmtpwGgp*&q6fH9U=35ua{p2LEwBY4H3R;o!Uo;R$dQ`iI& zH6%FJk@v!MyoUJIrNK{m_G*gPCWQi%<%t0k+CiivFxd3RMcBcgu^jX~5 zk5 zGz?brM`fQl8EryXBzx0SY2o#77I#bTIW#p;;9gE90HgM;Q)#-YWU54Hs;S zdl4W$j$NUE-8j!Hq0~xl=ln2QXl|nwAz$zGtnLLc71H^GaB7b!?hL1Qv7k~BR0F%& zC4wSQI4puX;c_>E7EuPzj-*TW@md_|29J$GtBHIoiV9f2)%3+4zi6rmjfJbnP^eg< z@oa}yn0v=i9$LyBNQ=R%IWd%+e~Fa7GG^;%2G>ya%N}rFJc*%~u{_sy5z4J%DL-X$ zr&y|BYKze{gg3-u!!LTM5P@y1(75^vQItD7sZhu&Ee?!-pwb_Qf_i~r`U;-yq)=MJ ztDLmh*YB4u^t+75xafVcT;t>zG+h0FmyV<2^0{A(7RK%4DF4ffTAuD+v@ur#K~n&d_N_)DQC6^I0P8Cv1UB z<1!zM5FS%Z8}TpuzFd^T=|k3vkt_DFz&^nC8>`ipmkd$6Tb!Sppislsf+QXrkwI35pP5$AsKjn-f&M z!&*t3r8)ha1@!f-m!{^i8?{Jh6ttQh))Y5nkUL3c<@ljs1$fGOPAg5Zw2^0)rY69y z8>J~c^r(;;l)Qm}{=BW8eGC8Y4UvfAD(a8e`D8W4oDtwkgGqd!L4W&uq zj>CKhCGuxEMJQ2gc~>$;1H&&Q1N+mtQ5i)Gi{)h#=PgUG1RsGcu({Lncym#>Q(0i( zW*$+N#?cl}OgUN&_R2@f)0bkxLvB%l5)00egl=(vBXaT=&hnTF6cRE(DQzbHf8(9Q zSzcX%D$y0bRe|19%2hP?sEB=9&ZFcdljl_=nHzAZBDDsqE?tSzqh@PS?sy40&Fw^1 z04@&z%wP6M;y+ah6!Ja0DpLsU;7XOL8SUg@m8o>pE(H|LJ&kf}pi0v7!OAollW0

)5uW2ewCY6xu{7F5E;_Fqwh;H!6s?;m`rUoM{(6kiwo7h_mY;ou= zFvxGR>jmmb*O_0SHv!GtFHku;%tfkEY4Djdji{t&U^U7s`IGS?^)~qv=-9`fgqJ_X zzoho$%qx_@3ts{xj_}c!=xxyS3)LwNYHX2+G^OeLA4|g_hi%pv&1Y;)~0&qEPyONCJmgDS{GNVqlDeGIy60O z56Ce|M7zLqOIkiq92mS|D>to65mDPAgse&oNz%1~YXBzLBdflN2i8>^xx6k-qgxWx z5q=81!UXLY`(DYqeq>vH>OpI{cYSjHYh)4wZgIanRDh4x2d_TMzt^Wk6N?Hv0vs0E zk>}+GASdAU+YPBw$Xbb(SeiGuW0UrJIxlHR?d)qcsmpQxMpQj=9HE+U56p!l!V82> zjj*BPJlMMzB*0=`!B!gF_!Wx&m%Eqtif{Mc2M*M4LM8wGie@*Vcr0dn6HNRHN4!o^ z6Pr?*z@L<<2A&b3ALbXEQk3h6rXSS+d!c+MKSL@hDK2VY_I7ZvW8AALeSo!}Z3^CW zoEtZz$Ob30xFBfQ5>-??XAs;Qo6&bk%PevQc{|$*JPuNIU>O~U#}9nR>1}{SJ?y4_ zl9x4uklxR4G^Y+Vf6-*yB+=A-xgT_?gi%w(IV!5sqt+B>kbX+T&uK|eBB$qi@|OQ> zPL(T-hfopDpd|5SMbTcGndi{VoT!|L^01vzF**#^-qbPzu!o&qrTCDum^JADM3AY@ z*fG{Ip8G1j1R(tSDyTc1`@BY@!Nmhx&?Wkn@3nxMbB?21k`t2Y#g>pRBlwM$R6D`s zU?nZtJnE*j6-~ai046S2rw{uMw}iMl%ePum5p%;{&3_yzPttmU>k~JC)^_guIu!~q zpRp$WH(u~M)epEJb%~1_rhSS3lm)-Y0zirM)7-Qb_{Bxfz*f-Qv{hE8Ctoxe8Xs>B zo_N_*GcIeKdW9($+q+nUEl`o0GuoQUOS4lW5QNUcz8Q1pD$-5i7yuYvggNkRF)#v zSOaZPMnU>Xa&E1#jrv+^WT2H#FMwLIj?1(sXW{iI5fZEpHw)yg`Whga-jafSL>o_! z_E19Uw8#H#csC&SgWjRyQONaj=5cDJDd`1rNjL5gM90)uDqt>K?gO+ zewMrg-ICULrgo%t^4jWs$}4bv|3mr{&-`vDdR%Oc)tMKLHCJ9ask~}JdC+=;)#ZnR zJXlPezZ2$;zJW)4M5V)i)l{L&f@P>X_3~HV{}H_(a9dzAVF;3bmtXEowE@3joxw$K z^QF!d6?Fw`fVBdP9VlYj!^5Yds} zp9-G0lKV}i*Rfa58$iC*46YjCcT7~Z_`xq})TmwzLeosBN(bp z1`(xk`ySA0yh`Vd9+W?LjMXKPSH%&m-qbLg+tyQOuF(^Alj&69g*_=){H}3_Fi}U` zhUNu_3NIc<4u|PZxy@xirDVF}dFNB=PIQ-#e1`R3=NODe_t@SGO12t3n(zCIVD8q7 z3P$#PJt>SszNBEVnuISYuB?nx%9={cHgA=p zjUp%!YDrk~NO?FwEj3^vH|b1aJoZa$Wq)4yCB0T~fHe;9^?{JPAk9Hm{0!#&eW-Wp zFxd_aXSlp#h=md|NDojjM*m(Idk6Q;-HCp379>g7T$3bFRW2v(tDOA2!pbNFOUkP@ zLxD{WF+ZX&379gGY1Ea5dPb&EJ7A&bN()@?J}Lues1e88xuG)m5U&bUrcJqr)&Y zOBsohapeS>!0!#FxWfOmSph!?ZrYhb!SC>{M-P>LpFe$C;;W^Og#f> z)D-~VB9RD4sjdLHx&qL1WI4R~3*-hV08>CO_@c@*h{#Q7-|)xd=`$Gkzm2C=Fzja< z1dqRGuK{CSEU|LwC{drgrqgf@5f_;V3su8RBIdG_s7Ba$a#=(Tsm6E}L}4n3 z!zRJ(Nau5tlp;}hGD&a2z{&K44)TC0aN_?HOQvHSHI42kNTCHwMW$@qoi-hh=5XPr z>{2R2x~I}~>`~wvoKp&x0+jSM++`M3;ZZZ`8;Ge&vtTQ!qO;L!tN}=01he-GSY;D7 zxc+4WEX%5|<<7I|7%JBLicaB@G>1;&VxLQK5WYp{s(03}>6AZ2p4}}{Tz*_?F1a{p z9<4CTwCu7gD1)S&H6KzY1d`nl4VN2j!Lc8@#w%KyvFeFS>5o+LT8-F zQy0@v%HsGXRN?haiuWank!Y7B#*)6tDxmEa!TtF9X+Rd-ld>{&0KmZEsx&fHOVSVTP!)n{qRSN zz7?>ux@XxqD@051(RP&#(DqKQpF#KOF}s&h4f`&v@~~k2HdWwt%cyV;Z@9Az*5pKP zx|{}tnIk}nK==4bGRN4?mzUE6@x7I=j{+-tlu2D+2dAu{5_UKWG`Evohv8&ez5?B5 zc@D1tdlS2@rVNi=31{1GF0m4R!XNlaglJBC`J0vCLwh*ZLzg2|^eh)|I4@})M0lQE ztEd!DR1WPDKO0Z)VN*!=vnK}piOmq}UDvw;^Meh)@%KYww*LseD#DI?}9aSnm^bDDRjmP&$4n_pG98)`RZNNE#I$Jn143?oU{?8hI5Xq z?WRs)6Kp<%0jNywrZCNI(p+%m6$Nb*ajS9Fydu)YxK$>D&HZDx$$%#Ezz+^j>FJ*Q zdw{KEc!vBy!zh?-E{Dm8g1{EjxzLZ$IVN!5AL&J0*8K>5d;&-Bqe_VrY%oKh`#U6m za46bd#b{`@E6F6c&-3T~uh4TL! zq>O%n3ml+^K+d-g(AzJdT&nyiZzy%PqMB~HNw5V<;X5cb57R10%C-v7kA{B!JV1>D zhufr*s92dgeq)yc559|j2dQfKWo(fm3CXJvvXGC^{;u%BgVY8HoqPzg>=KVS1Si7@ z&Nu{pD~nGbqHbccjXU(9Lfri)nu(Z6fx|EYr}DtV)Q3j0I0A>qV3{Wooh@HS@s|Z4 zp8Fi3G_38(ksL!})KPfPrtz$!;33y}*HMZpe8VdD0HVn~1jm1FT5HmmaS()XCMZ5p z)1u#Czn|fPyvUt@rdgO<-ea&$Z*jF_upcgR#xbg_J?>9@a)5|ozvEOUXe{|$|Db6hlyU?2 zvr>7@X<8K09gpxW;&-lc$6-AE4);C-7sOqU|5-|+eD}bYK{py&zt1~=MNnWC2c3g{bC4^a!$cqO8|SdN**yFlq5}sx>m0=ALq_DW8sZj3&r^rg zfjC;G*i#yA{((LDsyxM>&_OQtgtLF{emE!h59|qzBzsDm`OoZWosTmyIMYN=k&ED4 zPqC-I^ap=(8K&1o9(|cI{r;3p19@_MX0V76kD#T;z!&m}`(A;ocPVFGp&9}5pdMB& z&-8J?RjQ-U!kmSBADm{=HS*ZX9j;R40D0~XFvmgnnLPI@RV+P`K;TkuvPpIa|KLce zL6ZJNif^|xsKA0vy-L&nvaevLYNRYWXm>2;|4%5D$glh?sPpEBMN&wKj@83C&$@0F)N13u?vtsuigZ-TST z<{me}NJe|IZqhQc&9}LS95C}8zWtqCF_7(YmR7k6Ov!N-?$3AcP?ymDh)#D7VjNL?{AZe!9l)#7d&Y; zhu?#KdytzV*)Vzl^tPJN&ZK0)2pi zCsGw;14hP5-B(pHj&}kuw;mG1)iLZ5WtHu31AJseS28ImD+&&?;E&&U1|1p&oE3cb%1OKEr{_-&` zh!|v(>{aEFLW3}Slu(+@FFt{=KFFUw0XKcfbDvOS`(Rs~RUg9lpCEF(jkoUA<71OVTzL~la0#0*`gtHp3Q%EtA>H{(Y!AiWxN+v#A801vZP-I1JamavCZMG& z3IZBR06>R+L@;%x4CYXrhl4cPBZN<7Dh9YC0?0MhxHw@?m1)VbP>1vZc6%~r8FR+a*AW+SNu zsCpPmM&ifvS2i&K6HBy<3N+r+#x8D?$ok9E%unQ(GUr`?A)^Av{KXilcccUeJ3$TT z8YsdlL9LM=rU1QJTPu}9=o7$^y{4VKg#rfW3Mdypt%E?M0OthW7$}gp0wj`c#o1X6JlvnhXpt>9^x(b@iZSsp0G2JE|K82y5s(3UWl}94EfOzU)=?t54 z(fGsTp-B^Crqn~+VwO#22J^uJA`19^1FA{LA^=nRLX>X=IJA%g&gFK`)F>#{LxX)% zP<&*E&m9&ye-a|n{tITECrp%vh?03`+%!x`2Tl7hQCG~hNoy)D=!p{Rrb~1#A4P5P zwT+z~3h~5-i&0c!ot^BR)W+cSVf&5|Q3Au_D2~0u-Tt$8BOo9qh%NSW#Q78qAk*#ba_I@oIzzd`9ZX z5Z_|1;(Sp4(P$MRCFCu^h{+I#=Y1L(L&mrf6rrx<=9x}@LZc$Md^WdUl3NG#57UlW9 zVq$W@CL0W}%@PJ%I8Sj=21r(|xTuD(cdz22C1AC$xF{D0Op1Uzte9kx5F#_32?2KIq+yAKa{l9?Ulm z?;C#OMNuq1Cuui3T~uy}oCwr17}$YuYR!KUAL+ViQr5nQdy3GE39qVw3?3Gc8RJ`3@`AC>Y}-Qy(VQL61I@y)D|G&H*1JebjmZl zhCq5-CQovUOoT=n)r9yw#T{#k1T23+pJxsR< z)9W;B2-mM8UJ{RN{J4ckg&^w|q+oVd`ZM)2E^MB+u`17^ioba1L%Hl3}XVXe3&M4jZDBUjQf4C2b~X zypj5cyr_{V38UfXMnZZgRLOumZH}4qR`(S#6bx$LD-hTh zhVrsQaJGar5p7Ce7;5U*PYK>Mq;N>>#^*rw>B0T%#<+DM#*9r4Ue^RXd=!`I439{o zrXt2V+8*!@cXeoCVzAvbkOy;_slc?XrosWx5feB(yAJ$QcV87%@jm%AFjo^D#Yj6hz6QU|M85DE5&#F<+2yB|qcL2qg;;@1 zuUjp^k)+VKU919#$0MV?Q&Tqw*Cx8jWgX$f_eGAF zp^$Q+%ZEbx)kb}YDA_k0n<5H}g=SlMMLtnQ9-E>V#^e;?Oj>A{+HSTt;P?B=rg_>M z08MKVgZ$c8lDH_`z(v1+*^&D}o&%b3hdJ`$f40DJ=RRkV82yp;rDK^`1fUsdZ7d%!oGrfZQ2 z3!Xny%*X4rh||nzKFuY9KSt1SEKmDbRLf^}0dDV2&R)QmK2|`>*F`kZy&g8mPU#Ml zIg4E&?@aqIdgo3kzfQ<}<$=?$*_@qBE>lRW{dZ1#TyokYCZ|2Y)jtuRV=Gm1 zPewPeXXPX;$S1o&Cw$3hMO~)#3FY+Ed&Rvxal8Phr|D z<+-2249XhL+dmcY1=B`INrycT&_fz4|6A4we)1{2DjD3q7tFh5-1{>;E$58SM0;HF zeJ)mlGw%3YH1?ltH?@j&+&cW#c}di6rj+ITV%qy+i}+3Oh`s+Py{T zpyhU`nC1b%jFH^0w_-Z9>EEbE+fpcD8r>TkDtL)Mq!=Tb+@z$>OC3Ln`azPb% z@RuTr|N2q{6kG-Vj$Ym5f@OAo z@4p%#dV`_F3=}Vet#-fx1R!PqfnY|Pyv%5mWJaZYCm=RSK9pd+Vs|0$r4WU4=}E%I zuMZLh#3eg-nF8*-iN_6s{jr(%PZ2TsHrwHD(zi%mNU5t%&Z}!BIBBq`?vRR%^p8Wz zM)B$C&`Bopn86^Nt-N3`V6cr(42FwgyO*`$s#sg&AtL)k#&-U6h)6E6UGa?^qQ^6O ze$C`wH}S1O$-Q7~0^9fSfg!+5(~d9TmA{-&x^i$qFx-tnjj_bOK3o4sD|Dhw3xnNkguXae=eAzZde?lICma-({j)X`{V5Q--_&Q5LF?b1-fYhsoB> z#ORxRda5Xj)bKphM0YXj3a3sJb%SR?eLIM$Li9i@J;XmvgB72_@zcTYmvQUq0EJ=? zk-T-faQR8nl4=5{9TTB;d8h(fp}+K3uH<4fKvfsH;|#GJ@mYluM1LIIa$HR||>}oOSZ$){RD8j9@1oL~&Ij>VZZwWZj&-`Qwn*PiKmtp}E`RY>9^4Wvo z6>#2J9t^L|(=$X%+bz3$UwIP>C6^&m{JS0Q^46Yt%cPIxM_#d96wl-HY5(n;g2DV= zrq~P5dW99D`QI7TUCE%3rX;Q6M<#>1pBpE<4C;Z2jSox)HF%|3=hBtg>%`{f_dvD1 zz_mT%I70afdA-#Yq@FHXUXfw~)e}Q+dPQJ)nH^bbz z&W|^X>dE~b(9)!#p?J_SnE)mg5IGQXX7Elb_WA&asTXc|!XIscIW&+*Y!Qit1|fq7 zEO^>PugWRYma&I}&EnsA-xeV=yee)5&f|dRRr;P;rZU6jr<)H?|t&quc7oboV76t~}wl&rMxVO}jC&tJ>yp7Fd3 zSH!8We=p)_IOp2|p+ADl?GVM2N18L6%;pgC42%2%stjz%csb6#%W*M*QS$L7{msp{ zYlj$**|yz@*y?qjyc2&{0P88W3n~WA%p{5AMUY07v8q0I`h_e1e%?erl_?JB*%=Q&3j^jsr zL{#KrwJh0FQSB4?)815rG7K*LgNWA0%e{v9YpQl_bbo&H2WYtl_y0lEi=H5%i_!2Y zAN-zHzffyr_psVgQDpY#ynC}pEVdWM`b4g?R}_lQJ@5`pxu~{EysidWGll!1M!4*T z9cs03@ku;!A4Sn5UbR;o%`;gBKQOR9g{S-o*ZovZ+z0J)8n@mj-UDbi?Gxp3qV(QA zcyCAW!u{~cUF4VpqOx{`TG@Ac9D2@bQJgAq_0*4Ep zpu)<703dd9m1zxx1Pd_1ueTpysghfr{=)=MdvDEIcXcf2^nP|DkfV94JSiBK^ zal9M|P&zH4gg^1&zKENd4*6#fjML2uayN8Kd*59s?z**}HL{Vc9XjCLMFucikC zB6#vKSTtS-$T^4U^gPG299p*1Q#wGR a~so|@gzdKbSu+%C7>MA##DaO{@)4#w+ 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 Z?eSA7U=i_(j_5w%J*~ZUUlWVv{{VLLFJ=G$ delta 29656 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 A4gdfE diff --git a/contracts/tests/sysio.system_tester.hpp b/contracts/tests/sysio.system_tester.hpp index 1de2328b44..20069ec868 100644 --- a/contracts/tests/sysio.system_tester.hpp +++ b/contracts/tests/sysio.system_tester.hpp @@ -198,6 +198,7 @@ class sysio_system_tester : public TESTER { ("max_kv_key_size", 256 + n) ("max_kv_value_size", 262144 + n) ("max_kv_secondary_key_size", 256 + n) + ("notify_cpu_stipend", 100 + n) ("max_ram_size", (n % 10 + 1) * 1024 * 1024) ("ram_reserve_ratio", 100 + n); } diff --git a/contracts/tests/sysio.system_tests.cpp b/contracts/tests/sysio.system_tests.cpp index 8ce40b872f..8e6f5efd67 100644 --- a/contracts/tests/sysio.system_tests.cpp +++ b/contracts/tests/sysio.system_tests.cpp @@ -359,7 +359,8 @@ fc::mutable_variant_object config_to_variant( const sysio::chain::chain_config& ( "max_action_return_value_size", config.max_action_return_value_size ) ( "max_kv_key_size", config.max_kv_key_size ) ( "max_kv_value_size", config.max_kv_value_size ) - ( "max_kv_secondary_key_size", config.max_kv_secondary_key_size ); + ( "max_kv_secondary_key_size", config.max_kv_secondary_key_size ) + ( "notify_cpu_stipend", config.notify_cpu_stipend ); } BOOST_FIXTURE_TEST_CASE( setparams, sysio_system_tester ) try { diff --git a/libraries/chain/chain_config.cpp b/libraries/chain/chain_config.cpp index 31c0cdd976..3e70b79812 100644 --- a/libraries/chain/chain_config.cpp +++ b/libraries/chain/chain_config.cpp @@ -27,6 +27,8 @@ namespace sysio { namespace chain { "min transaction cpu usage cannot exceed max transaction cpu usage" ); SYS_ASSERT( max_transaction_cpu_usage < (max_block_cpu_usage - min_transaction_cpu_usage), action_validate_exception, "max transaction cpu usage must be at less than the difference between the max block cpu usage and the min transaction cpu usage" ); + SYS_ASSERT( notify_cpu_stipend <= max_transaction_cpu_usage, action_validate_exception, + "notify cpu stipend cannot exceed max transaction cpu usage" ); SYS_ASSERT( 1 <= max_authority_depth, action_validate_exception, "max authority depth should be at least 1" ); diff --git a/libraries/chain/include/sysio/chain/chain_config.hpp b/libraries/chain/include/sysio/chain/chain_config.hpp index 4a2c3ec02f..44f9578c42 100644 --- a/libraries/chain/include/sysio/chain/chain_config.hpp +++ b/libraries/chain/include/sysio/chain/chain_config.hpp @@ -34,6 +34,7 @@ struct chain_config_v0 { max_kv_key_size_id, max_kv_value_size_id, max_kv_secondary_key_size_id, + notify_cpu_stipend_id, PARAMS_COUNT }; @@ -58,6 +59,11 @@ struct chain_config_v0 { uint32_t max_kv_value_size = config::default_max_kv_value_size; ///< maximum KV value size in bytes uint32_t max_kv_secondary_key_size = config::default_max_kv_secondary_key_size; ///< maximum KV secondary key size in bytes + /// CPU (in microseconds) of a notified contract that the entry paying for the notifying frame covers: the contract + /// pays only past it, and 0 means no stipend. Applied where CPU is measured; validators bill a receipt's entries as + /// given. + uint32_t notify_cpu_stipend = config::default_notify_cpu_stipend; + void validate()const; inline const chain_config_v0& v0() const { @@ -86,7 +92,8 @@ struct chain_config_v0 { lhs.max_action_return_value_size, lhs.max_kv_key_size, lhs.max_kv_value_size, - lhs.max_kv_secondary_key_size + lhs.max_kv_secondary_key_size, + lhs.notify_cpu_stipend ) == std::tie( rhs.max_block_net_usage, @@ -105,7 +112,8 @@ struct chain_config_v0 { rhs.max_action_return_value_size, rhs.max_kv_key_size, rhs.max_kv_value_size, - rhs.max_kv_secondary_key_size + rhs.max_kv_secondary_key_size, + rhs.notify_cpu_stipend ); }; @@ -132,7 +140,8 @@ struct chain_config_v0 { << "Max Action Return Value Size: " << max_action_return_value_size << ", " << "Max KV Key Size: " << max_kv_key_size << ", " << "Max KV Value Size: " << max_kv_value_size << ", " - << "Max KV Secondary Key Size: " << max_kv_secondary_key_size; + << "Max KV Secondary Key Size: " << max_kv_secondary_key_size << ", " + << "Notify CPU Stipend: " << notify_cpu_stipend; } }; @@ -163,6 +172,7 @@ FC_REFLECT(sysio::chain::chain_config_v0, (max_action_return_value_size) (max_kv_key_size)(max_kv_value_size)(max_kv_secondary_key_size) + (notify_cpu_stipend) ) namespace fc { @@ -234,6 +244,9 @@ inline DataStream &operator<<(DataStream &s, const sysio::chain::data_entry>(DataStream &s, sysio::chain::data_entry frames; ///< by action ordinal - 1 @@ -321,6 +330,7 @@ namespace sysio::chain { /// disabled: pending until a block includes the transaction when it succeeded, or as a failure. void bill_subjectively( const account_subjective_cpu_bill_t& authorizers_cpu ); /// Bills `cpu_us` of receiver entry `e` to its contract: CPU only, never NET. finalize() reads its CPU limit. + /// An entry of 0 bills nothing: the contract is not billed, so its CPU window is neither updated nor checked. void bill_receiver( const receiver_entry& e, uint32_t cpu_us ); /// First authorizer of input action `input`, or the transaction's when it has none. account_name input_first_authorizer( uint32_t input ) const; diff --git a/libraries/chain/include/sysio/chain/webassembly/sys-vm-oc/code_cache.hpp b/libraries/chain/include/sysio/chain/webassembly/sys-vm-oc/code_cache.hpp index 26e7cce8ab..7f99056a10 100644 --- a/libraries/chain/include/sysio/chain/webassembly/sys-vm-oc/code_cache.hpp +++ b/libraries/chain/include/sysio/chain/webassembly/sys-vm-oc/code_cache.hpp @@ -143,6 +143,9 @@ class code_cache_sync : public code_cache_base { using code_cache_base::code_cache_base; ~code_cache_sync(); + /// The cached descriptor for `code_id`, or nullptr when it has not been compiled yet. Never compiles. + const code_descriptor* const get_cached_descriptor(mode m, const digest_type& code_id); + //Can still fail and return nullptr if, for example, there is an expected instantiation failure const code_descriptor* const get_descriptor_for_code_sync(mode m, account_name receiver, const digest_type& code_id, const uint8_t& vm_version); diff --git a/libraries/chain/transaction_context.cpp b/libraries/chain/transaction_context.cpp index 790779c69a..aad04ff04d 100644 --- a/libraries/chain/transaction_context.cpp +++ b/libraries/chain/transaction_context.cpp @@ -876,6 +876,8 @@ namespace sysio::chain { } void transaction_context::bill_receiver( const receiver_entry& e, uint32_t cpu_us ) { + if (cpu_us == 0) + return; // a contract whose stipend covered its code owes nothing, whatever its CPU window holds // A receiver pays CPU only: its NET window is neither updated nor checked. auto& bill = accounts_billing.try_emplace(e.account, account_billing{ .pays_net = false }).first->second; bill.cpu_usage_us += cpu_us; @@ -908,10 +910,17 @@ namespace sysio::chain { ? get_action_trace(parent.entry + 1).act.payer() : receiver_entries[parent.entry - input_entries].account; if (act_trace.receiver != parent_payer) { - receiver_entry e{ .account = act_trace.receiver, - .input = parent_on_input ? parent.entry - : receiver_entries[parent.entry - input_entries].input, - .ordinal = action_ordinal }; + // A notification reaches a contract that cannot refuse it, so the parent's entry covers its first + // stipend. An action sent to the contract itself bills it from the start, as calling it directly does. + const bool notified = act_trace.receiver != act_trace.act.account; + receiver_entry e{ .account = act_trace.receiver, + .input = parent_on_input + ? parent.entry + : receiver_entries[parent.entry - input_entries].input, + .ordinal = action_ordinal, + .stipend_entry = parent.entry, + .stipend_left_us = + notified ? control.get_global_properties().configuration.notify_cpu_stipend : 0 }; if (!explicit_billed_cpu_time && !is_read_only()) { // Its usage window was not updated in this block, so its usage decays to the pending block. std::tie(e.cpu_limit_us, e.cpu_greylisted, std::ignore) = @@ -928,7 +937,8 @@ namespace sysio::chain { if (explicit_billed_cpu_time || entry < input_entries) return false; // the receipt carries the CPU, or the input entry measures its whole action - // The receiver pays for this frame, so the frame runs against the receiver's remaining CPU. + // The receiver pays for this frame past its stipend, so the frame runs against what is left of the stipend and + // then the receiver's remaining CPU. The stipend's payer is checked against its limit in finalize(). const receiver_entry& e = receiver_entries[entry - input_entries]; int64_t used_us = 0; for (const auto& r : receiver_entries) @@ -936,7 +946,8 @@ namespace sysio::chain { used_us += r.cpu_us; const fc::time_point now = fc::time_point::now(); frame_begin = now - action_start; - set_billing_deadline(e.account, e.cpu_limit_us - used_us, e.cpu_greylisted, now); + set_billing_deadline(e.account, e.cpu_limit_us - used_us, e.cpu_greylisted, now, + fc::microseconds(e.stipend_left_us)); if (enforce_deadline) checktime(); // fail early if the receiver has no CPU left return true; @@ -947,16 +958,25 @@ namespace sysio::chain { receiver_entry& e = receiver_entries[frames[action_ordinal - 1].entry - input_entries]; // action_start moves forward by any pause, so this leaves paused time out const fc::microseconds cpu = std::max(fc::time_point::now() - action_start - frame_begin, fc::microseconds(0)); - e.cpu_us += cpu.count(); - // The frame's CPU is not the input payer's: the action's clock and deadline move past it. - action_start += cpu; + const int64_t stipend_us = std::min(cpu.count(), e.stipend_left_us); + e.stipend_left_us -= stipend_us; + e.cpu_us += cpu.count() - stipend_us; + if (e.stipend_entry < input_entries) { + // The input entry measures its action's whole time apart from receiver entries' CPU, so leaving the stipend + // in the action's clock bills it to the input entry. + action_start += cpu - fc::microseconds(stipend_us); + } else { + receiver_entries[e.stipend_entry - input_entries].cpu_us += stipend_us; + // The frame's CPU is not the input payer's: the action's clock and deadline move past it. + action_start += cpu; + } const account_name payer = get_action_trace(e.input + 1).act.payer(); const auto& b = accounts_billing.at(payer); set_billing_deadline(payer, b.cpu_limit_us, b.cpu_greylisted, action_start); } void transaction_context::set_billing_deadline( account_name account, int64_t cpu_limit_us, bool greylisted, - fc::time_point from ) { + fc::time_point from, fc::microseconds stipend ) { active_deadline = trx_deadline; tx_cpu_usage_reason = trx_cpu_usage_reason; if (!explicit_billed_cpu_time) { @@ -965,7 +985,10 @@ namespace sysio::chain { subjective_cpu_bill = control.get_subjective_billing().get_subjective_bill(account, control.pending_block_time()); // Add leeway to allow powerup - const int64_t account_cpu_limit = cpu_limit_us - subjective_cpu_bill.count() + leeway.count(); + int64_t account_cpu_limit = cpu_limit_us - subjective_cpu_bill.count() + leeway.count(); + // An account with no CPU left still runs for its stipend, which another entry pays for. + if (stipend > fc::microseconds(0)) + account_cpu_limit = stipend.count() + std::max(account_cpu_limit, 0); // Possibly limit deadline to account subjective cpu left if (from + fc::microseconds(account_cpu_limit) < trx_deadline) { active_deadline = from + fc::microseconds(account_cpu_limit); diff --git a/libraries/chain/webassembly/runtimes/sys-vm-oc.cpp b/libraries/chain/webassembly/runtimes/sys-vm-oc.cpp index ed140c5b40..902c0e1274 100644 --- a/libraries/chain/webassembly/runtimes/sys-vm-oc.cpp +++ b/libraries/chain/webassembly/runtimes/sys-vm-oc.cpp @@ -5,6 +5,8 @@ #include #include +#include + #include #include @@ -28,7 +30,14 @@ class sysvmoc_instantiated_module : public wasm_instantiated_module_interface { sysio::chain::sysvmoc::code_cache_sync::mode m; m.whitelisted = context.is_sys_vm_oc_whitelisted(); m.write_window = context.control.is_write_window(); - const code_descriptor* const cd = _sysvmoc_runtime.cc.get_descriptor_for_code_sync(m, context.get_receiver(), _code_hash, _vm_version); + const code_descriptor* cd = _sysvmoc_runtime.cc.get_cached_descriptor(m, _code_hash); + if (!cd) { + // Compiling the module loads it, which is not billed, as instantiating a module is not for the other + // runtimes. + context.trx_context.pause_billing_timer(); + auto resume = fc::make_scoped_exit([&]() { context.trx_context.resume_billing_timer(); }); + cd = _sysvmoc_runtime.cc.get_descriptor_for_code_sync(m, context.get_receiver(), _code_hash, _vm_version); + } SYS_ASSERT(cd, wasm_execution_error, "SYS VM OC instantiation failed"); _sysvmoc_runtime.exec_mem.get_executor().execute(*cd, _sysvmoc_runtime.exec_mem.get_memory(), context); diff --git a/libraries/chain/webassembly/runtimes/sys-vm-oc/code_cache.cpp b/libraries/chain/webassembly/runtimes/sys-vm-oc/code_cache.cpp index 1b7638a158..f3314a08fb 100644 --- a/libraries/chain/webassembly/runtimes/sys-vm-oc/code_cache.cpp +++ b/libraries/chain/webassembly/runtimes/sys-vm-oc/code_cache.cpp @@ -243,14 +243,18 @@ code_cache_sync::~code_cache_sync() { elog("unexpected response from SYS VM OC compile monitor during shutdown"); } -const code_descriptor* const code_cache_sync::get_descriptor_for_code_sync(mode m, account_name receiver, const digest_type& code_id, const uint8_t& vm_version) { - //check for entry in cache +const code_descriptor* const code_cache_sync::get_cached_descriptor(mode m, const digest_type& code_id) { code_cache_index::index::type::iterator it = _cache_index.get().find(code_id); - if(it != _cache_index.get().end()) { - if (m.write_window) - _cache_index.relocate(_cache_index.begin(), _cache_index.project<0>(it)); - return &*it; - } + if(it == _cache_index.get().end()) + return nullptr; + if (m.write_window) + _cache_index.relocate(_cache_index.begin(), _cache_index.project<0>(it)); + return &*it; +} + +const code_descriptor* const code_cache_sync::get_descriptor_for_code_sync(mode m, account_name receiver, const digest_type& code_id, const uint8_t& vm_version) { + if (const code_descriptor* const cached = get_cached_descriptor(m, code_id)) + return cached; if(!m.write_window) return nullptr; diff --git a/libraries/state_history/abi.cpp b/libraries/state_history/abi.cpp index 259b2f0a70..9386804ec6 100644 --- a/libraries/state_history/abi.cpp +++ b/libraries/state_history/abi.cpp @@ -375,7 +375,8 @@ extern const char* const state_history_plugin_abi = R"({ { "type": "uint32", "name": "max_action_return_value_size" }, { "type": "uint32", "name": "max_kv_key_size" }, { "type": "uint32", "name": "max_kv_value_size" }, - { "type": "uint32", "name": "max_kv_secondary_key_size" } + { "type": "uint32", "name": "max_kv_secondary_key_size" }, + { "type": "uint32", "name": "notify_cpu_stipend" } ] }, { diff --git a/libraries/state_history/include/sysio/state_history/serialization.hpp b/libraries/state_history/include/sysio/state_history/serialization.hpp index e3af739de9..e1220c6fa7 100644 --- a/libraries/state_history/include/sysio/state_history/serialization.hpp +++ b/libraries/state_history/include/sysio/state_history/serialization.hpp @@ -305,6 +305,7 @@ datastream& operator<<(datastream& ds, const history_serial_wrapper_stat fc::raw::pack(ds, as_type(obj.obj.max_kv_key_size)); fc::raw::pack(ds, as_type(obj.obj.max_kv_value_size)); fc::raw::pack(ds, as_type(obj.obj.max_kv_secondary_key_size)); + fc::raw::pack(ds, as_type(obj.obj.notify_cpu_stipend)); return ds; } diff --git a/plugins/trace_api_plugin/trace_api_plugin.md b/plugins/trace_api_plugin/trace_api_plugin.md index 0beff26bdb..1dc22fcabe 100644 --- a/plugins/trace_api_plugin/trace_api_plugin.md +++ b/plugins/trace_api_plugin/trace_api_plugin.md @@ -349,7 +349,7 @@ requested window has been recorded yet, the response carries | `data` | Raw action payload as hex. | | `return_value` | Raw return value as hex (empty string when none). | | `account_ram_deltas` | Array of `{account, delta}` objects capturing RAM allocation changes. | -| `cpu_usage_us` | Producer-set CPU in microseconds for this action (present only for input/top-level actions). | +| `cpu_usage_us` | Producer-set CPU in microseconds for this action's receipt entry: present for input/top-level actions and for actions where billing switched to a contract paying for its own code (that contract's CPU past the notification stipend, often 0). | | `net_usage` | Producer-set NET usage in bytes for this action (present only for input/top-level actions). | | `params` | ABI-decoded action payload (omitted when ABI unavailable or decode failed). | | `return_data` | ABI-decoded return value (omitted when ABI unavailable or no return type defined). | diff --git a/tests/PerformanceHarness/genesis.json b/tests/PerformanceHarness/genesis.json index bc0fe361c9..b100fe5009 100644 --- a/tests/PerformanceHarness/genesis.json +++ b/tests/PerformanceHarness/genesis.json @@ -19,6 +19,7 @@ "max_action_return_value_size": 1024, "max_kv_key_size": 256, "max_kv_value_size": 262144, - "max_kv_secondary_key_size": 256 + "max_kv_secondary_key_size": 256, + "notify_cpu_stipend": 100 } } diff --git a/tests/TestHarness/launcher.py b/tests/TestHarness/launcher.py index 4dac198229..a66d81fc0e 100644 --- a/tests/TestHarness/launcher.py +++ b/tests/TestHarness/launcher.py @@ -387,7 +387,8 @@ def init_genesis(self): 'max_action_return_value_size': 1024, 'max_kv_key_size': 256, 'max_kv_value_size': 262144, - 'max_kv_secondary_key_size': 256 + 'max_kv_secondary_key_size': 256, + 'notify_cpu_stipend': 100 } } else: diff --git a/tests/chain_plugin_tests.cpp b/tests/chain_plugin_tests.cpp index 2664861b7e..f984a05b10 100644 --- a/tests/chain_plugin_tests.cpp +++ b/tests/chain_plugin_tests.cpp @@ -162,6 +162,7 @@ BOOST_AUTO_TEST_CASE( get_consensus_parameters ) try { BOOST_TEST(v0config.max_kv_key_size == t.control->get_global_properties().configuration.max_kv_key_size); BOOST_TEST(v0config.max_kv_value_size == t.control->get_global_properties().configuration.max_kv_value_size); BOOST_TEST(v0config.max_kv_secondary_key_size == t.control->get_global_properties().configuration.max_kv_secondary_key_size); + BOOST_TEST(v0config.notify_cpu_stipend == t.control->get_global_properties().configuration.notify_cpu_stipend); BOOST_TEST(!!parms.wasm_config); // enabled at genesis for Wire diff --git a/tests/sysio_util_snapshot_info_test.py b/tests/sysio_util_snapshot_info_test.py index e74ceb6bfb..76c1684827 100755 --- a/tests/sysio_util_snapshot_info_test.py +++ b/tests/sysio_util_snapshot_info_test.py @@ -16,8 +16,8 @@ "file": "unittests/snapshots/snap_v1.bin.gz", "result": { "version": 1, - "chain_id": "47ae951a06f2f2ab68f635ab8e13a90e9fb86a84b9a7e452cb283ee64eaf10ec", - "head_block_id": "0000001d6c66eed3cf0eba51d54cb11d017b8a1ce2b3e6d5ed4a3df4ef6ce6da", + "chain_id": "ee2335a729e7d39bc8d43581a10311f9311a2c4f02461c131c67cd18034004bf", + "head_block_id": "0000001d93468b8aa64d0ac4676bac2ff8ecadfbfdb420ddae0569ae098688cd", "head_block_num": 29, "head_block_time": "2025-01-01T00:00:14.000" } diff --git a/tutorials/bios-boot-tutorial/genesis.json b/tutorials/bios-boot-tutorial/genesis.json index 0e9cdd7a3a..2c7f0798cd 100644 --- a/tutorials/bios-boot-tutorial/genesis.json +++ b/tutorials/bios-boot-tutorial/genesis.json @@ -19,6 +19,7 @@ "max_action_return_value_size": 1024, "max_kv_key_size": 256, "max_kv_value_size": 262144, - "max_kv_secondary_key_size": 256 + "max_kv_secondary_key_size": 256, + "notify_cpu_stipend": 100 } } diff --git a/unittests/deep-mind/deep-mind.log b/unittests/deep-mind/deep-mind.log index a9a19d1e72..071053ec5c 100644 --- a/unittests/deep-mind/deep-mind.log +++ b/unittests/deep-mind/deep-mind.log @@ -33,289 +33,289 @@ DMLOG START_BLOCK 3 DMLOG CREATION_OP ROOT 0 DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":2,"value_ex":0,"consumed":0},"cpu_usage":{"last_ordinal":2,"value_ex":1157,"consumed":101},"ram_usage":3167} DMLOG TRX_OP CREATE onblock 25f421300276271937f13f4b1121c55eabb25df362b0b09c85f850d5603aa335 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274010000000000000000eab0c700000001cbe9c4c147bc3f3434f9d82409e76d09ea58905aefe7fb5415912d9a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 -DMLOG APPLIED_TRANSACTION 3 25f421300276271937f13f4b1121c55eabb25df362b0b09c85f850d5603aa33503000000020000000100000003f59d37dbcd0eca11fe31f0d96f99c331f73a937c0529569c90bb2414010164640000000000000000000000000000000001010000010000000000eab0c7ea2d9e1003d4e2079e792230ba588be16f41032b290324fa071c34c0b6fc7e5a02000000000000000200000000000000010000000000eab0c7020000000000000000000000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274010000000000000000eab0c700000001cbe9c4c147bc3f3434f9d82409e76d09ea58905aefe7fb5415912d9a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000164000025f421300276271937f13f4b1121c55eabb25df362b0b09c85f850d5603aa33503000000020000000100000003f59d37dbcd0eca11fe31f0d96f99c331f73a937c0529569c90bb241400000000000000 -DMLOG CREATION_OP ROOT 0 -DMLOG RAM_OP 0 sysio code add setcode sysio 422507 419340 -DMLOG KV_OP INS 0 sysio sysio 16298 c7b0ea0000000000 0000000000eab0c7a37764858e5340551e76c4bc12e5326301df07ce3ecd3424d053e11e33d421f240a21bba992a060003000000 -DMLOG RAM_OP 0 sysio:16298:c7b0ea0000000000 table_row add primary_index_add sysio 422679 172 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":2,"value_ex":243525,"consumed":42081},"cpu_usage":{"last_ordinal":2,"value_ex":12732,"consumed":2101},"ram_usage":422679} -DMLOG APPLIED_TRANSACTION 3 3bcc58bad333d63bcbe25dfd4b230bd7a3c36ff3d78b4e92a35ba9bb25ab245e03000000020000000100000003f59d37dbcd0eca11fe31f0d96f99c331f73a937c0529569c90bb24140101d00fd00f000000000000000061a400000000000001010000010000000000eab0c7c1207d52f7867571fb52812180d50b3af6568ded709933fc45af0b6a1dda330403000000000000000300000000000000010000000000eab0c7030000000000000001000000000000eab0c70000000000eab0c700000040258ab2c2010000000000eab0c700000000a8ed3232dbc7020000000000eab0c70000cec7020061736d0100000001e1012160000060017f0060027f7f0060037f7f7f0060037f7f7f017f60027f7f017e6000017e6000017f60017e0060037e7f7f0060077f7f7f7f7f7f7f017f60027e7f0060047e7e7e7e0060037e7f7f017e60017f017f60027f7f017f60077f7e7f7f7f7f7f017f60047f7f7f7f017f60067f7f7f7f7f7f017f60047e7f7f7f017f60027f7e0060047f7e7e7f0060057f7f7f7f7f017f60087f7f7f7f7f7f7f7f0060077f7f7f7f7f7f7f0060017d017d60047f7f7f7f0060037f7e7f0060047f7e7f7f0060027e7e0060067f7e7f7f7f7f017f60067f7f7f7f7f7f0060037e7e7e0002df041e03656e760c737973696f5f617373657274000203656e76066d656d736574000403656e76076d656d6d6f7665000403656e760561626f7274000003656e76066d656d637079000403656e7606736861323536000303656e7609726970656d64313630000303656e76207365745f626c6f636b636861696e5f706172616d65746572735f7061636b6564000203656e76167365745f70726f706f7365645f70726f647563657273000503656e760c63757272656e745f74696d65000603656e760d6765745f626c6f636b5f6e756d000703656e760c726571756972655f61757468000803656e760e7365745f66696e616c697a657273000903656e760b626c735f70616972696e67000a03656e760e7365745f70726976696c65676564000b03656e76137365745f7265736f757263655f6c696d697473000c03656e76197365745f70726f706f7365645f70726f6475636572735f6578000d03656e761370726561637469766174655f66656174757265000103656e76067072696e7473000103656e761469735f666561747572655f616374697661746564000e03656e7610616374696f6e5f646174615f73697a65000703656e7610726561645f616374696f6e5f64617461000f03656e7614737973696f5f6173736572745f6d657373616765000303656e76066b765f736574001003656e760a626c735f66705f6d6f64001103656e760a626c735f67325f6d6170001103656e760a626c735f67325f616464001203656e760d6765745f636f64655f68617368001303656e76087072696e74686578000203656e7611737973696f5f6173736572745f636f6465001403ed01eb010001010e0f0100040e0e010104150f0f010f16171802040f0211040402020e010f01030f0308010f02020206190e1a000f0100010001000100020100011b1c020203030f0f020e11020e030302020202021d0f1d1d1d1d1d0f1c1b1c1d0f0f021d1d0f1d0f0e02021d0f0e02021d0f0e1d0f0f0f1d1d031d141e020f0f0f0f1f030201010f0f02020f0f0f0f0f0f020f0f0303000f030202020202020f030f020f02020f0202020f1e020f020f02020f0211020e030101010e010202020202020e0211020e0f02030f02020211020e1a010303030303030303030f0303030f010101010211020e1a0120200405017001242405030100010616037f014180c0000b7f0041f8d9000b7f004180da000b072e04066d656d6f727902000a5f5f646174615f656e6403010b5f5f686561705f626173650302056170706c790088020944010041010b23b401b501b601b701b801b901bd01bf01c001c201c301c4014f515355585ad801d901da01db01dc01dd01ef01f001f101f201f301f4013cfd01fe013eff010ad8a602eb0110001024104d105010521054105610590b0900200041013602000b0900200041003602000b7201037f024020000d0041000f0b410041002802f456200041107622016a22023602f456410041002802ec56220320006a410f6a41707122003602ec560240200241107420004b0d004100200241016a3602f456200141016a21010b024020014000417f470d0041004180c00010000b20030b8a0101037f0240200120006c22000d0041000f0b410041002802f456200041107622026a22033602f456410041002802ec56220120006a410f6a41707122043602ec560240200341107420044b0d004100200341016a3602f456200241016a21020b024020024000417f470d0041004180c00010000b024020010d0041000f0b20014100200010011a20010b02000b3601017f230041106b2200410036020c4100200028020c280200410f6a41707122003602e856410020003602ec5641003f003602f4560b990101037f41f8d600101f024041002802805722030d004188d700210341004188d700360280570b0240024041002802845722044120470d0002404184024101102222030d00417f21050c020b41002104200341002802805736020041002003360280570b410021054100200441016a36028457200320044102746a22034184016a2001360200200341046a20003602000b41f8d600102020050bcc0101037f20002101024002402000410371450d00024020002d00000d00200020006b0f0b200041016a2201410371450d0020012d0000450d01200041026a2201410371450d0020012d0000450d01200041036a2201410371450d0020012d0000450d01200041046a22014103710d010b2001417c6a21022001417b6a21010340200141046a2101200241046a22022802002203417f73200341fffdfb776a7141808182847871450d000b0340200141016a210120022d00002103200241016a210220030d000b0b200120006b0b3601027f20004101200041014b1b2101024003402001102122000d0141002100410028028c592202450d0120021100000c000b0b20000b0600200010230b0600200010280b4901037f4100210302402002450d000240034020002d0000220420012d00002205470d01200141016a2101200041016a21002002417f6a22020d000c020b0b200420056b21030b20030b6a01017e4200210402400240200341ff004d0d00420021020c010b024020030d00200121040c010b02402003413f4b0d00200141c00020036bad8820022003ad220486842102200120048621040c010b2001200341406aad8621020b20002002370308200020043703000bf90101027f0240200041ffc1d72f4b0d0020012000102d0f0b200020004180c2d72f6e22024180c2d72f6c6b210302400240200041ff93ebdc034b0d00200120024130723a0000410121000c010b410221002001200241017441d0c0006a410210041a0b200120006a220020034190ce006e220141ffff037141e4006e220241017441d0c0006a410210041a200041026a2001200241e4006c6b41017441feff037141d0c0006a410210041a200041046a200320014190ce006c6b220141ffff037141e4006e220341017441d0c0006a410210041a200041066a2001200341e4006c6b41017441feff037141d0c0006a410210041a200041086a0bda0301027f02402001418fce004b0d000240200141e3004b0d000240200141094b0d00200020014130723a0000200041016a0f0b2000200141017441d0c0006a410210041a200041026a0f0b200141ffff0371220241e4006e21030240200141e7074b0d00200020034130723a0000200041016a200241e4007041017441d0c0006a410210041a200041036a0f0b2000200341017441d0c0006a410210041a200041026a2001200341e4006c6b41017441feff037141d0c0006a410210041a200041046a0f0b20014190ce006e210302400240200141bf843d4b0d0002402001419f8d064b0d00200020034130723a0000410121020c020b410221022000200341017441d0c0006a410210041a0c010b0240200141fface2044b0d002000200341ffff037141e4006e22024130723a0000200041016a2003200241e4006c6b41017441feff037141d0c0006a410210041a410321020c010b2000200141c0843d6e41017441d0c0006a410210041a200041026a200341e4007041017441d0c0006a410210041a410421020b200020026a2200200120034190ce006c6b220141ffff037141e4006e220341017441d0c0006a410210041a200041026a2001200341e4006c6b41017441feff037141d0c0006a410210041a200041046a0b05001003000bbb0101037f20004200370200200041086a22024100360200024020012d00004101710d00200020012902003702002002200141086a28020036020020000f0b02402001280204220241704f0d00200128020821030240024002402002410b490d002002410f72220441016a10272101200020023602042000200441026a360200200020013602080c010b200020024101743a0000200041016a21012002450d010b20012003200210041a0b200120026a41003a000020000f0b1003000bc50101047f20004200370200200041086a41003602000240200128020420012d00002205410176200541017122061b22052002490d00200520026b2205200320052003491b220341704f0d00200128020821070240024002402003410b490d002003410f72220841016a10272105200020033602042000200841026a360200200020053602080c010b200020034101743a0000200041016a21052003450d010b20052007200141016a20061b20026a200310041a0b200520036a41003a000020000f0b1003000bfc0101047f0240416e20016b2002490d00200041016a210820002d000041017121092000280208210a416f210b0240200141e6ffffff074b0d00410b200220016a22022001410174220b2002200b4b1b2202410f7241016a2002410b491b210b0b200a200820091b2108200b1027210202402004450d0020022008200410041a0b02402006450d00200220046a2007200610041a0b2003200520046a220a6b210902402003200a460d00200220046a20066a200820046a20056a200910041a0b02402001410a460d00200810280b200020023602082000200b4101723602002000200620046a20096a2204360204200220046a41003a00000f0b1003000bcb0101047f416f21070240416f20016b2002490d00200041016a210820002d000041017121092000280208210a0240200141e6ffffff074b0d00410b200220016a220720014101742202200720024b1b2207410f7241016a2007410b491b21070b200a200820091b210820071027210202402004450d0020022008200410041a0b02402003200520046a2209460d00200220046a20066a200820046a20056a200320096b10041a0b02402001410a460d00200810280b20002002360208200020074101723602000f0b1003000b820201067f0240200141704f0d00024020002d0000220220002802002203417e71417f6a2000280204200341017641ff007120034101711b22032001200320014b1b2201410f72220446712002410171452001410a4b22021b0d000240024020020d0041012102200041016a210520002802082106200321070c010b200441016a10272105200028020420002d00002202410176200241017122021b21072000280208200041016a20021b21060b0240200741016a2207450d0020052006200710041a0b02402002450d00200610280b02402001410b490d0020002005360208200020033602042000200441026a3602000f0b200020034101743a00000b0f0b1003000bb20101037f0240024020002802002203417e71417f6a410a20002d00004101711b22042000280204200341017641ff0071200341017122051b22036b2002490d002002450d012000280208200041016a20051b220420036a2001200210041a200320026a21020240024020002d0000410171450d00200020023602040c010b200020024101743a00000b200420026a41003a000020000f0b20002004200220046b20036a2003200341002002200110310b20000bb80101047f2001102621020240024020002802002203417e71417f6a410a20002d00004101711b22042000280204200341017641ff0071200341017122051b22036b2002490d002002450d012000280208200041016a20051b220420036a2001200210041a200320026a21020240024020002d0000410171450d00200020023602040c010b200020024101743a00000b200420026a41003a000020000f0b20002004200220046b20036a2003200341002002200110310b20000ba20101037f0240024002400240024020002d000022024101710d00410a2103410a210420024114460d01200241017621030c020b200028020422032000280200417e71417f6a2204470d020b2000200441012004200441004100103220002d00004101710d010b2000200341017441026a3a0000200041016a21000c010b2000200341016a360204200028020821000b200020036a220041003a0001200020013a00000bf80101037f0240200028020420002d00002204410176200441017122051b22042001490d000240024020002802002206417e71417f6a410a20051b220520046b2003490d002003450d012000280208200041016a20064101711b2105024020042001460d00200520016a220620036a2006200420016b10021a200220034100200520046a20024b1b4100200620024d1b6a21020b200520016a2002200310021a200420036a21030240024020002d0000410171450d00200020033602040c010b200020034101743a00000b200520036a41003a000020000f0b20002005200420036a20056b2004200141002003200210310b20000f0b1003000b0e002000200120022002102610370baa0101057f0240200028020420002d00002203410176200341017122041b22052001490d0002402002450d00200520016b2206200220062002491b21072000280208200041016a20041b21040240200620024d0d00200420016a2202200220076a200620076b10021a20002d000021030b200520076b2102024002402003410171450d00200020023602040c010b200020024101743a00000b200420026a41003a00000b20000f0b1003000b900201047f230041106b220224002001200241056a102c2103200041086a41003602002000420037020002402003200241056a6b220441704f0d00024002402004410a4b0d00200020044101743a0000200041016a21010c010b2004410f72220541016a10272101200020043602042000200541026a360200200020013602080b0240200241056a2003460d0002400240200441077122040d00200241056a21000c010b200241056a21000340200120002d00003a0000200141016a2101200041016a21002004417f6a22040d000b0b200241056a20036b41784b0d00034020012000290000370000200141086a2101200041086a22002003470d000b0b200141003a0000200241106a24000f0b1003000b900201047f230041106b220224002001200241056a102c2103200041086a41003602002000420037020002402003200241056a6b220441704f0d00024002402004410a4b0d00200020044101743a0000200041016a21010c010b2004410f72220541016a10272101200020043602042000200541026a360200200020013602080b0240200241056a2003460d0002400240200441077122040d00200241056a21000c010b200241056a21000340200120002d00003a0000200141016a2101200041016a21002004417f6a22040d000b0b200241056a20036b41784b0d00034020012000290000370000200141086a2101200041086a22002003470d000b0b200141003a0000200241106a24000f0b1003000b040020000b2801017f0240200028020822010d00200020002802002802101101000f0b20002001417f6a3602080b040041000b05001003000b2301017f230041206b2203240020012002200310052000200310411a200341206a24000bbd0301057e200131000f2102200131000e2103200131000d2104200020013100002205423886200542108620013100014208868420013100028442108620013100034208868420013100048442108620013100054208868420013100068422064208862205428080808080e0ffff008384200542808080f8ff1f838420054280feff0783842006421086200131000742088684200131000884421086200131000942088684200131000a84421086200131000b42088684200131000c8442108622054238888437030820002002200320052004420886848442088684370300200131001f2102200131001e2103200131001d2104200041186a20013100102205423886200542108620013100114208868420013100128442108620013100134208868420013100148442108620013100154208868420013100168422064208862205428080808080e0ffff008384200542808080f8ff1f838420054280feff0783842006421086200131001742088684200131001884421086200131001942088684200131001a84421086200131001b42088684200131001c844210862205423888843703002000200220032005200442088684844208868437031020000bed0102017f017e230041206b220324002001200220031006200020033100014208862003310000421086842003310002844228862003310005420886200331000684200331000342188620033100044210868484420886842003310009420886200331000a842003310007421886200331000842108684844220862204423888843703082000200331000d420886200331000e842004200331000b421886200331000c421086848484420886200331000f84370300200041186a200331001142088620033100104210868420033100128442288620033100134220868437030020004200370310200341206a24000b0a0041002000370390590b5101017f230041e0006b220124002001200141d8006a36020c2001200141106a3602082001200141106a360204200141046a200010451a200141106a200128020820012802046b1007200141e0006a24000b9d0801027f02402000280208200028020422026b41074a0d0041004198c2001000200028020421020b20022001410810041a2000200028020441086a2202360204200141086a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a22023602042001410c6a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141106a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141146a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141186a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a22023602042001411c6a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141206a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141246a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141286a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a22023602042001412c6a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141306a21030240200028020820026b41014a0d0041004198c2001000200028020421020b20022003410210041a2000200028020441026a2202360204200141326a21030240200028020820026b41014a0d0041004198c2001000200028020421020b20022003410210041a2000200028020441026a2202360204200141346a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141386a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a22023602042001413c6a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a22023602040240200028020820026b41034a0d0041004198c2001000200028020421020b2002200141c0006a410410041a2000200028020441046a36020420000b7402017f017e230041106b22022400200241046a200110470240024020022802042201200228020820016b100822034200530d0020002003370300410121010c010b41002101200041003a00000b200020013a0008024020022802042200450d0020022000360208200010280b200241106a24000baa0403047f017e027f230041206b2202240041002103200041003602082000420037020020012802042204200128020022056b410675ad21060340200341016a2103200642ff005621072006420788210620070d000b2002200336021402400240024020052004470d0041002107410021050c010b0340200228021441086a2107200541386a2802002208ad21060340200741016a2107200642ff005621032006420788210620030d000b200220073602142002200241146a3602182008417f460d02200841027441c4c2006a28020021072002200241186a360208200241086a200541086a2007110200200541c0006a22052004470d000b2000280200210720002802042105200228021421030b024002402003200520076b22084d0d002000200320086b10a40120002802002107200028020421050c010b200320084f0d002000200720036a22053602040b2002200736020c2002200736020820022007200520076b6a360210200128020420012802006b410675ad2106034020022006a741ff0071200642ff00562203410774723a00180240200228021020076b41004a0d0041004198c20010000b200642078821062007200241186a410110041a2002200228020c41016a220736020c20030d000b02402001280200220720012802042203460d0003402002200241086a360214200220073602182002200741086a36021c200241186a200241146a1048200741c0006a22072003470d000b0b200241206a24000f0b10b101000b930202047f017e230041106b2202240020002802002103024020012802002204280208200428020422056b41074a0d0041004198c2001000200428020421050b20052003410810041a2004200428020441086a360204200028020422053502302106200128020022042802042101034020022006a741ff0071200642ff00562200410774723a000b0240200428020820016b41004a0d0041004198c2001000200428020421010b2006420788210620012002410b6a410110041a2004200428020441016a220136020420000d000b20022004360204024020052802302204417f470d0010b101000b200441027441f4c2006a28020021042002200241046a36020c2002410c6a20052004110200200241106a24000b040010090b930101047f230041106b210102402000bc220241177641ff017122034195014b0d000240200341ff00490d0041ffffff03200341817f6a2203762204200271450d0120012000430000807b9238020c4100200420024100481b20026a418080807c20037571be0f0b20012000430000807b923802080240200241004e0d0043000000800f0b430000803f200020021b21000b20000bfb0e01067f02400240200041d3014b0d004130210141b0c300210203402002200141017622034102746a220441046a2002200428020020004922041b210220012003417f736a200320041b22010d000b200228020021020c010b02402000417c4f0d002000200041d2016e220541d2016c22066b21004130210141f0c400210203402002200141017622034102746a220441046a2002200428020020004922041b210220012003417f736a200320041b22010d000b200241f0c4006b41027521000340200041027441f0c4006a28020020066a210241d87e2101024003402002200141ecc4006a28020022036e22042003490d042002200420036c460d012002200141f0c4006a28020022036e22042003490d042002200420036c460d01200141086a22010d000b41a303210103402002200141b07e6a22036e22042003490d042002200420036c460d012002200141ba7e6a22046e22062003410a6a2203490d042002200620046c460d012002200141bc7e6a22046e2206200341026a2203490d042002200620046c460d012002200141c07e6a22046e2206200341046a2203490d042002200620046c460d012002200141c27e6a22046e2206200341026a2203490d042002200620046c460d012002200141c67e6a22046e2206200341046a2203490d042002200620046c460d012002200141cc7e6a22046e2206200341066a2203490d042002200620046c460d012002200141ce7e6a22046e2206200341026a2203490d042002200620046c460d012002200141d47e6a22046e2206200341066a2203490d042002200620046c460d012002200141d87e6a22046e2206200341046a2203490d042002200620046c460d012002200141da7e6a22046e2206200341026a2203490d042002200620046c460d012002200141de7e6a22046e2206200341046a2203490d042002200620046c460d012002200141e47e6a22046e2206200341066a2203490d042002200620046c460d012002200141ea7e6a22046e2206200341066a2203490d042002200620046c460d012002200141ec7e6a22046e2206200341026a2203490d042002200620046c460d012002200141f27e6a22046e2206200341066a2203490d042002200620046c460d012002200141f67e6a22046e2206200341046a2203490d042002200620046c460d012002200141f87e6a22046e2206200341026a2203490d042002200620046c460d012002200141fe7e6a22046e2206200341066a2203490d042002200620046c460d012002200141827f6a22046e2206200341046a2203490d042002200620046c460d012002200141887f6a22046e2206200341066a2203490d042002200620046c460d012002200141907f6a22046e2206200341086a2203490d042002200620046c460d012002200141947f6a22046e2206200341046a2203490d042002200620046c460d012002200141967f6a22046e2206200341026a2203490d042002200620046c460d0120022001419a7f6a22046e2206200341046a2203490d042002200620046c460d0120022001419c7f6a22046e2206200341026a2203490d042002200620046c460d012002200141a07f6a22046e2206200341046a2203490d042002200620046c460d012002200141a87f6a22046e2206200341086a2203490d042002200620046c460d012002200141ae7f6a22046e2206200341066a2203490d042002200620046c460d012002200141b27f6a22046e2206200341046a2203490d042002200620046c460d012002200141b87f6a22046e2206200341066a2203490d042002200620046c460d012002200141ba7f6a22046e2206200341026a2203490d042002200620046c460d012002200141be7f6a22046e2206200341046a2203490d042002200620046c460d012002200141446a22046e2206200341066a2203490d042002200620046c460d012002200141466a22046e2206200341026a2203490d042002200620046c460d0120022001414c6a22046e2206200341066a2203490d042002200620046c460d012002200141526a22046e2206200341066a2203490d042002200620046c460d012002200141566a22046e2206200341046a2203490d042002200620046c460d012002200141586a22046e2206200341026a2203490d042002200620046c460d0120022001415c6a22046e2206200341046a2203490d042002200620046c460d012002200141626a22046e2206200341066a2203490d042002200620046c460d012002200141646a22046e2206200341026a2203490d042002200620046c460d0120022001416a6a22046e2206200341066a2203490d042002200620046c460d0120022001416e6a22046e2206200341046a2203490d042002200620046c460d012002200141706a22046e2206200341026a2203490d042002200620046c460d012002200141746a22046e2206200341046a2203490d042002200620046c460d012002200141766a22046e2206200341026a2203490d042002200620046c460d01200220016e22042003410a6a490d04200420016c2103200141d2016a210120022003470d000b0b4100200041016a2202200241304622021b2100200520026a220541d2016c21060c000b0b1003000b20020bc20801097f230041206b220424000240024002400240200128020422050d0020004200370200200041086a41003602000c010b02402002450d00200441186a410036020020044200370310200541704f0d0220012802002102024002402005410b490d002005410f72220641016a10272101200420053602142004200641026a360210200420013602180c010b200420054101743a0010200441106a41017221010b20012002200510041a200120056a41003a000020042802182207200441106a410172220820042d0010220141017122021b2206200428021422092001410176220a20021b220b6a210c2006210102400240200b450d00200b210520062101034020012d0000410a460d01200141016a21012005417f6a22050d000b200c21010c010b2001200c460d00200141016a2205200c460d002006200b6a220220016b417e6a210b024020022001417f736a4103712202450d000340024020052d00002206410a460d00200120063a0000200141016a21010b200541016a21052002417f6a22020d000b0b0240200b4103490d000340024020052d00002202410a460d00200120023a0000200141016a21010b024020052d00012202410a460d00200120023a0000200141016a21010b024020052d00022202410a460d00200120023a0000200141016a21010b024020052d00032202410a460d00200120023a0000200141016a21010b200541046a2205200c470d000b0b20042d00102205410176210a2005410171210220042802142109200428021821070b200441106a20012007200820021b22056b20052009200a20021b6a20016b10391a2004200428021420042d00102201410176200141017122011b36020c20042004280218200820011b360208200420042902083703002000200441002003104c20042d0010410171450d01200428021810280c010b20004200370200200041086a41003602002000200541027641036c10332001280200210b410021010340200141016a20054f0d03024020034108742206200b20016a220241016a2d00007241b0c6006a2d0000220c41c000470d0041004199c00010000b0240200620022d00007241b0c6006a2d0000220841c000470d0041004199c00010000b20002008411a74200c4114744180808018717241187510360240200141026a20054f0d000240200241026a2d0000220841526a0e1001000000000000000000000000000001000b0240200620087241b0c6006a2d0000220841c000470d0041004199c00010000b2000200c411c74200841167441808080f80071724118751036200141036a20054f0d000240200241036a2d0000220241526a0e1001000000000000000000000000000001000b2008410674210c0240200620027241b0c6006a2d0000220241c000470d0041004199c00010000b20002002200c6a41187441187510360b200141046a22012005490d000b0b200441206a24000f0b200441106a102e000b410041b0ca0010001003000b2e00024041002d00a4594101710d00410041013a00a4594198d90041bac000104e1a410d41004180c00010251a0b0b8c0101037f20004200370200200041086a4100360200024020011026220241704f0d000240024002402002410b490d002002410f72220341016a10272104200020023602042000200341026a360200200020043602080c010b200020024101743a0000200041016a21042002450d010b20042001200210041a0b200420026a41003a000020000f0b2000102e000b1900024041002d009859410171450d0041002802a05910280b0b2e00024041002d00b4594101710d00410041013a00b45941a8d90041caca00104e1a410e41004180c00010251a0b0b1900024041002d00a859410171450d0041002802b05910280b0b2e00024041002d00c4594101710d00410041013a00c45941b8d90041d3ca00104e1a410f41004180c00010251a0b0b1900024041002d00b859410171450d0041002802c05910280b0b2e00024041002d00d4594101710d00410041013a00d45941c8d90041ffca00104e1a411041004180c00010251a0b0b1900024041002d00c859410171450d0041002802d05910280b0b7b01027f230041e0006b22002400024041002d00e4594101710d00410041013a00e459200041abcb0041e00010042101410042003702d859410041003602e05941d8d90041e000105741002802dc59200141e00010041a410041002802dc5941e0006a3602dc59411141004180c00010251a0b200041e0006a24000b2f01017f02402001417f4a0d002000103f000b2000200110272202360200200020023602042000200220016a3602080b1e01017f024041002802d8592201450d00410020013602dc59200110280b0b6e01027f024041002d00f4594101710d00410041013a00f459410041c004102722003602e8594100200041c0046a3602f059410021010340200020016a41003a0000200141016a220141c004470d000b200041013a00004100200020016a3602ec59411241004180c00010251a0b0b1e01017f024041002802e8592201450d00410020013602ec59200110280b0bae0102017f017e23004180016b2203240020002903002104200341e0006a20022802002200200228020420006b1040200342003703582003200437035020032001370348200341186a2003290368370300200341206a200341f0006a290300370300200341286a200341e0006a41186a2903003703002003200137030020032003290360370310200310493703302003100a360238200341d0006a2001200341c8006a2003105c20034180016a24000b4f01017f23004190026b220424002004410036028c022004410c6a20022903001096010240200020012004410c6a200428028c0220034100109701450d0041004194d00010000b20044190026a24000bbb1407027f017e0e7f017e027f027d067f23004190036b220224002000290300100b02402001410c6a2802002200200128020822036b41306d41818004490d004100418bcc00100020012802082103200128020c21000b024020002003470d00410041bccc00100020012802082103200128020c21000b20024188036a4100360200420021042002420037038003200220012903003703f802200241f8026a41086a2205200020036b41306d105e200241ec026a41dbcc00104e2106200241e0026a41e3cc00104e2107200241808080fc033602dc02200242003702d402200242003702cc02024020012802082208200128020c2209460d00200241cc026a41086a210a200741016a210b200641016a210c2002412c6a410172210d2002412c6a410172210e420021040340024020082d0000410171450d002008280204418102490d00410041ebcc0010000b2002412c6a200841186a22004100200628020420062d0000220341017620034101711b20001030210f0240024020022802302210200f2d000022114101762212201141017122031b200628020420062d00002200410176200041017122001b470d002006280208200c20001b2100024020030d00200e210320114102490d02034020032d000020002d0000470d02200041016a2100200341016a21032012417f6a22120d000c030b0b2010450d01200228023420002010102a450d010b4100419fcd0010000b0240200f2d0000410171450d00200228023410280b2002412c6a200841246a22004100200728020420072d0000220341017620034101711b20001030210f0240024020022802302210200f2d000022114101762212201141017122031b200728020420072d00002200410176200041017122001b470d002007280208200b20001b2100024020030d00200d210320114102490d02034020032d000020002d0000470d02200041016a2100200341016a21032012417f6a22120d000c030b0b2010450d01200228023420002010102a450d010b410041c4cd0010000b0240200f2d0000410171450d00200228023410280b0240200829031022132004427f85580d00410041fccd001000200829031021130b200241ec016a200841206a280200200841196a20082d0018220041017122031b2008411c6a280200200041017620031b105f2002410036022c2002412c6a200241ec016a410410041a200228022c211002400240024020022802d0022212450d000240024020126941014b22110d002012417f6a201071210f0c010b2010210f20102012490d002010201270210f0b20022802cc02200f4102746a2802002200450d002012417f6a2114034020002802002200450d010240200028020422032010460d000240024020110d00200320147121030c010b20032012490d00200320127021030b2003200f470d020b200041086a200241ec016a41e000102a0d000b410041a4ce0010000c010b41e8001027221541086a200241ec016a41e00010041a201541003602002015201036020420022a02dc02211620022802d80241016ab32117024002402012450d0020162012b39420175d450d010b2012410174201241034920122012417f6a7141004772722100024002402017201695104a2217430000804f5d201743000000006071450d002017a921030c010b410021030b41022118024020002003200020034b1b22004101460d00024020002000417f6a710d00200021180c010b2000104b21180b024002400240201820022802d00222004b0d00201820004f0d02200041034921120240024020022802d802b320022a02dc0295104a2217430000804f5d201743000000006071450d002017a921030c010b410021030b0240024020120d0020006941014b0d002003410141202003417f6a676b7420034102491b21030c010b2003104b21030b20182003201820034b1b221820004f0d022018450d010b20184180808080044f0d0420184102741027210320022802cc022100200220033602cc0202402000450d00200010280b200220183602d0024100210020182103034020022802cc0220006a4100360200200041046a21002003417f6a22030d000b20022802d4022214450d01201428020421190240024020186941014b221a0d0020192018417f6a7121190c010b20192018490d00201920187021190b20022802cc0220194102746a200a3602002014280200220f450d012018417f6a211b0340200f280204210002400240201a0d002000201b7121000c010b20002018490d00200020187021000b0240024020002019470d00200f21140c010b02400240024020022802cc022000410274221c6a2203280200450d004100211d200f28020022120d01200f21030c020b20032014360200200f2114200021190c020b200f41086a2111200f210303402011201241086a41e000102a21122003280200210002402012450d002000211d0c020b20002103200028020022120d000b200021030b2014201d360200200320022802cc02201c6a28020028020036020020022802cc02201c6a280200200f3602000b2014280200220f0d000c020b0b20022802cc022100200241003602cc0202402000450d00200010280b200241003602d0020b024020022802d00222122012417f6a2200710d002000201071210f0c010b0240201020124f0d002010210f0c010b2010201270210f0b02400240024020022802cc02200f4102746a220328020022000d00201520022802d402360200200220153602d4022003200a36020020152802002200450d02200028020421000240024020122012417f6a2203710d00200020037121000c010b20002012490d00200020127021000b20022802cc0220004102746a21000c010b201520002802003602000b200020153602000b200220022802d80241016a3602d8020b2002412c6a2008412c6a280200200841256a20082d0024220041017122031b200841286a280200200041017620031b10600240200241ec016a2002412c6a10610d00410041b9ce0010000b41e00010272200200241ec016a41e00010041a20022008102f21032002200041e0006a22123602202002201236021c20022000360218200220082903103703102005200310621a024020022802182200450d002002200036021c200010280b024020032d0000410171450d00200228020810280b201320047c2104200841306a22082009470d010c020b0b1003000b02400240200420012903002213540d0020132004420188560d010b410041d4ce0010000b024020022802800322002002280284032203460d00034002402000411c6a280200200041186a2802006b41e000460d00410041a4d40010000b200041286a22002003470d000b0b2002412c6a200241f8026a10634200200228022c2200200228023020006b100c0240200228022c2200450d0020022000360230200010280b024020022802d4022200450d00034020002802002103200010282003210020030d000b0b20022802cc022100200241003602cc0202402000450d00200010280b024020072d0000410171450d00200728020810280b024020062d0000410171450d00200628020810280b200510641a20024190036a24000b5001027f230041206b2202240002402000280208200028020022036b41286d20014f0d0020002002410c6a2001200028020420036b41286d200041086a106522011066200110671a0b200241206a24000b990902047f027e230041a0016b220324000240410028029c59220441002d00985922054101762206200541017122051b2002490d00410041edd000100041002d0098592205410176210620054101712105410028029c5921040b0240200141002802a0594199d90020051b2004200620051b102a450d004100418dd10010000b20032002410028029c5941002d009859220541017620054101711b22056b3602142003200120056a3602102003200329021037030820034194016a200341086a41014101104c200341dc006a20032802980120032d009401220541017620054101711b2201103b200341e8006a41086a200341dc006a410041c6d1001038220241086a28020036020020032002290200370368410021050340200220056a4100360200200541046a2205410c470d000b200341f8006a41086a200341e8006a41d4d1001035220241086a28020036020020032002290200370378410021050340200220056a4100360200200541046a2205410c470d000b200341d0006a41e000103b20034188016a41086a200341f8006a2003280258200341d0006a41017220032d0050220541017122021b2003280254200541017620021b1034220241086a2802003602002003200229020037038801410021050340200220056a4100360200200541046a2205410c470d000b200341306a41086a20034188016a41f3d1001035220241086a28020036020020032002290200370330410021050340200220056a4100360200200541046a2205410c470d000b200341c4006a4104103a200341106a41086a200341306a200328024c200341c4006a41017220032d0044220541017122021b2003280248200541017620021b1034220241086a28020036020020032002290200370310410021050340200220056a4100360200200541046a2205410c470d000b0240200141e400460d0041002003280218200341106a41017220032d0010220541017122021b2003280214200541017620021b10160b024020032d0010410171450d00200328021810280b024020032d0044410171450d00200328024c10280b024020032d0030410171450d00200328023810280b024020032d008801410171450d0020032802900110280b024020032d0050410171450d00200328025810280b024020032d0078410171450d0020032802800110280b024020032d0068410171450d00200328027010280b024020032d005c410171450d00200328026410280b0240200328029c0120034194016a41017220032d009401220241017122011b2205200328029801200241017620011b6a417c6a22042005460d0020002005200420056b10021a0b200341106a200041e0001042200341306a2102200341106a21014102210003404200200141086a2903002207200041014622051b21082007422088200129030020051b21074103410f20051b21050340200220056a20073c000020074208882008423886842107200842088821082005417f6a2205417f470d000b200141106a2101200241106a21022000417f6a22000d000b02402004200341306a4104102a450d0041004180d20010000b024020032d009401410171450d00200328029c0110280b200341a0016a24000b990902047f027e230041a0016b22032400024041002802ac59220441002d00a85922054101762206200541017122051b2002490d00410041edd000100041002d00a859220541017621062005410171210541002802ac5921040b0240200141002802b05941a9d90020051b2004200620051b102a450d004100418dd10010000b2003200241002802ac5941002d00a859220541017620054101711b22056b3602142003200120056a3602102003200329021037030820034194016a200341086a41014101104c200341dc006a20032802980120032d009401220541017620054101711b2201103b200341e8006a41086a200341dc006a410041c6d1001038220241086a28020036020020032002290200370368410021050340200220056a4100360200200541046a2205410c470d000b200341f8006a41086a200341e8006a41d4d1001035220241086a28020036020020032002290200370378410021050340200220056a4100360200200541046a2205410c470d000b200341d0006a41c001103b20034188016a41086a200341f8006a2003280258200341d0006a41017220032d0050220541017122021b2003280254200541017620021b1034220241086a2802003602002003200229020037038801410021050340200220056a4100360200200541046a2205410c470d000b200341306a41086a20034188016a41f3d1001035220241086a28020036020020032002290200370330410021050340200220056a4100360200200541046a2205410c470d000b200341c4006a4104103a200341106a41086a200341306a200328024c200341c4006a41017220032d0044220541017122021b2003280248200541017620021b1034220241086a28020036020020032002290200370310410021050340200220056a4100360200200541046a2205410c470d000b0240200141c401460d0041002003280218200341106a41017220032d0010220541017122021b2003280214200541017620021b10160b024020032d0010410171450d00200328021810280b024020032d0044410171450d00200328024c10280b024020032d0030410171450d00200328023810280b024020032d008801410171450d0020032802900110280b024020032d0050410171450d00200328025810280b024020032d0078410171450d0020032802800110280b024020032d0068410171450d00200328027010280b024020032d005c410171450d00200328026410280b0240200328029c0120034194016a41017220032d009401220241017122011b2205200328029801200241017620011b6a417c6a22042005460d0020002005200420056b10021a0b200341106a200041c0011042200341306a2102200341106a21014102210003404200200141086a2903002207200041014622051b21082007422088200129030020051b21074103410f20051b21050340200220056a20073c000020074208882008423886842107200842088821082005417f6a2205417f470d000b200141106a2101200241106a21022000417f6a22000d000b02402004200341306a4104102a450d0041004180d20010000b024020032d009401410171450d00200328029c0110280b200341a0016a24000beb0101037f23004190096b2202240041002103200241d0076a410041c00110011a200241d0046a410041800310011a200241d0076a41002802d859220441002802dc5920046b10041a200241d0046a200141c00110041a200241d0076a41e0006a200041e00010041a200241e0003602cc04200220003602c804200220022902c804370300200241c8d900200241d0046a41c0016a1068200241086a410041c00410011a0240200241d0076a41c001200241d0046a4180034102200241086a41c004100d0d00200241086a41002802e859220041002802ec5920006b102a4521030b20024190096a240020030bcf0101067f230041206b22022400200041086a210302400240024020002802042204200028020822054f0d0020032004200110692000200028020441286a22033602040c010b2004200028020022066b41286d220741016a220441e7cc99334f0d0120032002410c6a200520066b41286d220541017422062004200620044b1b41e6cc9933200541b3e6cc19491b2007200310652204280208200110692004200428020841286a360208200020041066200410671a200028020421030b200241206a2400200341586a0f0b2000103f000b6f01027f230041106b22022400200041003602082000420037020020024108360204200241046a200141086a220310a2011a20002002280204107d2002200028020436020c20022000280200220036020820022000360204200241046a2001109a01200310a3011a200241106a24000b5501037f024020002802002201450d00200121020240200028020422032001460d00200041086a210203402002200341586a220310ac0120032001470d000b200028020021020b20002001360204200210280b20000b6701017f410021042000410036020c200041106a2003360200024002402001450d00200141e7cc99334f0d01200141286c102721040b2000200436020020002004200241286c6a220336020820002004200141286c6a36020c2000200336020420000f0b1003000b9e0101047f2001280204210202402000280204220320002802002204460d00200041086a210503402005200241586a200341586a220310692001200128020441586a220236020420032004470d000b200028020021040b2000200236020020012004360204200028020421032000200128020836020420012003360208200028020821032000200128020c3602082001200336020c200120012802043602000b1c01017f200010d401024020002802002201450d00200110280b20000be10301027f230041a0066b22032400200341a0046a418002200028020020002802042001280208200141016a20012d0000220041017122041b2001280204200041017620041b109d01410021010340200341c0016a20016a200341a0046a2001413f736a2d00003a0000200141016a220141c000470d000b200341e0036a200341c0016a41c00010041a200341e0036a41c00020034180036a413010181a200341a0046a41c0006a2100410021010340200341c0016a20016a20002001413f736a2d00003a0000200141016a220141c000470d000b200341e0036a200341c0016a41c00010041a200341e0036a41c00020034180036a41306a2204413010181a20034180036a41e000200341c0016a41c00110191a200341a0056a2100410021010340200320016a20002001413f736a2d00003a0000200141016a220141c000470d000b200341e0036a200341c00010041a200341e0036a41c00020034180036a413010181a200341e0056a2100410021010340200320016a20002001413f736a2d00003a0000200141016a220141c000470d000b200341e0036a200341c00010041a200341e0036a41c0002004413010181a20034180036a41e000200341c00110191a200341c0016a41c001200341c001200241c001101a1a200341a0066a24000b8f0101017f20012002290300370300200141086a200241086a280200360200410021030340200220036a4100360200200341046a2203410c470d000b200141003602182001411c6a220342003702002001200228021836021820032002411c6a280200360200200141206a200241206a22032802003602002001200229031037031020034100360200200242003703180b5001017f230041106b220224002000290300100b200241046a2001106b420120022802042200200228020820006b10101a024020022802042200450d0020022000360208200010280b200241106a24000b6501017f230041106b22022400200041003602082000420037020020024100360204200241046a200110ad011a20002002280204107d2002200028020436020c20022000280200220036020820022000360204200241046a200110ae011a200241106a24000b970102047f027e230041206b220224002000290300100b2002210341022104200121050340200541086a290300210620052903002107410f21000340200320006a20073c000020074208882006423886842107200642088821062000417f6a2200417f470d000b200541106a2105200341106a21032004417f6a22040d000b2002101141d5cf001012200141f0cf00106d200241206a24000b860103037f027e017f230041206b2202240020022103410221040340200041086a290300210520002903002106410f21070340200320076a20063c000020064208882005423886842106200542088821052007417f6a2207417f470d000b200041106a2100200341106a21032004417f6a22040d000b20024120101c20011012200241206a24000b8d0103037f027e017f230041206b2202240020022103410221040340200141086a290300210520012903002106410f21070340200320076a20063c000020064208882005423886842106200542088821052007417f6a2207417f470d000b200141106a2101200341106a21032004417f6a22040d000b0240200210130d00410041f2cf0010000b200241206a24000ba70101037f230041206b220221032002240002400240101422040d00410021020c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a0b20032002360218200320023602142003200220046a36021c20034200370308200341146a200341086a10701a20034200370300200341146a200310701a02402004418004490d002002450d00200210230b200341206a24000b4001017f02402000280208200028020422026b41074b0d00410041c0d4001000200028020421020b20012002410810041a2000200028020441086a36020420000b5701037f230022022103024010142204450d000240200441ff034b0d0020022004410f6a4170716b220224002002200410151a0c010b200410212202200410151a2004418004490d002002450d00200210230b200324000b5701037f230022022103024010142204450d000240200441ff034b0d0020022004410f6a4170716b220224002002200410151a0c010b200410212202200410151a2004418004490d002002450d00200210230b200324000b5701037f230022022103024010142204450d000240200441ff034b0d0020022004410f6a4170716b220224002002200410151a0c010b200410212202200410151a2004418004490d002002450d00200210230b200324000b5701037f230022022103024010142204450d000240200441ff034b0d0020022004410f6a4170716b220224002002200410151a0c010b200410212202200410151a2004418004490d002002450d00200210230b200324000bef0101047f230041c0006b220221032002240002400240101422040d00410021020c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a0b2003413c6a2205200220046a360200200320023602382003200236023420034200370328200341346a200341286a10701a200341346a200341276a10761a200341346a200341266a10761a200341186a20052802003602002003200329023437031020032001370308200320003703002003200329032820032d002720032d0026107702402004418004490d002002450d00200210230b200341c0006a24000b3d01017f0240200028020820002802042202470d00410041c0d4001000200028020421020b20012002410110041a2000200028020441016a36020420000b6602017f017e230041e0006b220424002000290300210520044200370358200420053703502004200137034820042001370300200441106a200141001078200410493703302004100a360238200441d0006a2001200441c8006a20041079200441e0006a24000b810201047f230041106b2203210420032400024020020d00200341406a2202220324000b200341406a22032400024020014100200341c000101b220541c100490d002001410020051021220341c000101b1a0b200441003602002004200341c0006a220636020c2004200336020820042003360204200441046a2004107c1a02402004280200450d00410041ead40010000b2004200636020c2004200336020820042003360204200441046a200210c5011a0240200541c100490d00200310230b20002002290310370300200041186a200241286a290300370300200041106a200241206a290300370300200041086a200241186a290300370300200441106a24000b4f01017f23004190026b220424002004410036028c022004410c6a20022903001096010240200020012004410c6a200428028c022003410010c601450d0041004194d00010000b20044190026a24000b9d0201047f230041d0006b220221032002240041002104024010142205450d00024002402005418004490d002005102121040c010b20022005410f6a4170716b220424000b2004200510151a0b20032004360248200320043602442003200420056a36024c20034200370338200341c4006a200341386a10701a200341003602342003420037022c200341c4006a2003412c6a107b1a0240200328024c2003280248460d00410041a6d500412e10160b200341206a200341cc006a280200360200200320032902443703182003200137031020032000370308200341086a20032903382003412c6a105b0240200328022c2202450d0020032002360230200210280b02402005418004490d002004450d00200410230b200341d0006a24000b7701037f230041106b220224002002410036020c20002002410c6a107c1a2001200228020c107d02402000280208200028020422036b2001280204200128020022046b22014f0d00410041c0d4001000200028020421030b20042003200110041a2000200028020420016a360204200241106a240020000b7401047f2000280204210241002103410021040340024020022000280208490d00410041a2d5001000200028020421020b20022c000021052000200241016a2202360204200541ff0071200441ff01712204742003722103200441076a21042002210220054100480d000b2001200336020020000b3a01027f024020012000280204200028020022026b22034d0d002000200120036b10a4010f0b0240200120034f0d002000200220016a3602040b0bdc0103037f017e017f230041206b220221032002240002400240101422040d00410021020c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a0b20032002360218200320023602142003200220046a36021c20034200370308200341146a200341086a10701a200341146a200341076a10761a0240200328021c2003280218460d00410041a6d500412e10160b2003290308210520032d000721062000100b20052006410047100e02402004418004490d002002450d00200210230b200341206a24000b830202037f047e230041306b220221032002240002400240101422040d00410021020c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a0b20032002360228200320023602242003200220046a36022c20034200370318200341246a200341186a10701a200341246a200341106a1080011a200341246a200341086a1080011a200341246a20031080011a0240200328022c2003280228460d00410041a6d500412e10160b200329030021052003290308210620032903102107200329031821082000100b2008200720062005100f02402004418004490d002002450d00200210230b200341306a24000b4001017f02402000280208200028020422026b41074b0d00410041c0d4001000200028020421020b20012002410810041a2000200028020441086a36020420000bf30101047f230041c0006b220221032002240041002104024010142205450d00024002402005418004490d002005102121040c010b20022005410f6a4170716b220424000b2004200510151a0b20032004360238200320043602342003200420056a36023c2003410036023020034200370228200341346a200341286a1082011a0240200328023c2003280238460d00410041a6d500412e10160b200341206a2003413c6a280200360200200320032902343703182003200137031020032000370308200341086a200341286a106a200341286a1083011a02402005418004490d002004450d00200410230b200341c0006a24000b7601027f230041106b220224002002410036020020002002107c1a2001200228020010840102402001280200220320012802042201460d00034020022000360204200220033602082002200341086a36020c200241086a200241046a108501200341206a22032001470d000b0b200241106a240020000b1b0002402000280200450d00200010d501200028020010280b20000b8c0101037f0240200120002802042202200028020022036b41057522044d0d002000200120046b10df010f0b0240200120044f0d0002402002200320014105746a2203460d002002416c6a2101034002402001410c6a2204280200417f460d00200110d6011a0b2004417f360200200141746a2104200141606a210120042003470d000b0b200020033602040b0b4c01017f230041106b220224002001280200200028020010701a20002802042100200128020021012002410036020c20012002410c6a107c1a20012000200228020c10e501200241106a24000bcd0101047f230041306b220221032002240041002104024010142205450d00024002402005418004490d002005102121040c010b20022005410f6a4170716b220424000b2004200510151a0b20032004360218200320043602142003200420056a36021c2003410036021020034200370208200341146a200341086a1087011a0240200328021c2003280218460d00410041a6d500412e10160b2000100b200341206a200341086a1046200341086a1088011a02402005418004490d002004450d00200410230b200341306a24000b7701027f230041106b220224002002410036020020002002107c1a2001200228020010890102402001280200220320012802042201460d00034020022000360204200220033602082002200341086a36020c200241086a200241046a108a01200341c0006a22032001470d000b0b200241106a240020000b1b0002402000280200450d002000108002200028020010280b20000bb00101047f230041106b2202240002400240200120002802042203200028020022046b41067522054d0d002000200120056b1081020c010b200120054f0d0002402003200420014106746a2204460d00200341486a210103400240200141306a22052802002203417f460d002002410f6a2001200341027441d8d5006a2802001102000b2005417f360200200141786a2105200141406a210120052004470d000b0b200020043602040b200241106a24000b4c01017f230041106b220224002001280200200028020010701a20002802042100200128020021012002410036020c20012002410c6a107c1a20012000200228020c10f501200241106a24000b8b0201047f230041d0006b220221032002240041002104024010142205450d00024002402005418004490d002005102121040c010b20022005410f6a4170716b220424000b2004200510151a0b20032004360248200320043602442003200420056a36024c200341386a41003602002003420037033020034200370328200341c4006a200341286a1070200341286a41086a2202108c011a0240200328024c2003280248460d00410041a6d500412e10160b200341206a200341c4006a41086a280200360200200320032902443703182003200137031020032000370308200341086a200341286a105d2002108d011a02402005418004490d002004450d00200410230b200341d0006a24000b5c01027f230041106b220224002002410036020c20002002410c6a107c1a2001200228020c10c90102402001280200220320012802042201460d0003402000200310ca011a200341306a22032001470d000b0b200241106a240020000b5501037f024020002802002201450d00200121020240200028020422032001460d00200041086a210203402002200341506a220310cc0120032001470d000b200028020021020b20002001360204200210280b20000bb80101037f230041e0006b220221032002240002400240101422040d00410021020c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a0b20032002360258200320023602542003200220046a36025c200341d4006a200341086a108f011a0240200328025c2003280258460d00410041a6d500412e10160b2000100b200341086a104402402004418004490d002002450d00200210230b200341e0006a24000b890100200020011070200141086a1090012001410c6a109001200141106a109001200141146a109001200141186a1090012001411c6a109001200141206a109001200141246a109001200141286a1090012001412c6a109001200141306a109101200141326a109101200141346a109001200141386a1090012001413c6a109001200141c0006a1090010b4001017f02402000280208200028020422026b41034b0d00410041c0d4001000200028020421020b20012002410410041a2000200028020441046a36020420000b4001017f02402000280208200028020422026b41014b0d00410041c0d4001000200028020421020b20012002410210041a2000200028020441026a36020420000bb70101037f230041206b220221032002240002400240101422040d00410021020c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a0b20032002360218200320023602142003200220046a36021c20034200370308200341146a200341086a10701a0240200328021c2003280218460d00410041a6d500412e10160b2003290308100b02402004418004490d002002450d00200210230b200341206a24000bb80201057f230041c0006b2202210320022400024002400240101422040d00200341186a4200370300200341106a4200370300200342003703082003420037030041002102200421050c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a200341186a4200370300200341106a42003703002003420037030820034200370300200220046a21052004411f4b0d010b410041c0d40010000b200341206a2002412010041a200341206a200341206a41206a2003109401200241206a2106024020044120460d00410041a6d500412e10160b200341386a2005360200200341346a2006360200200320023602302003200137032820032000370320200341206a2003106c02402004418004490d002002450d00200210230b200341c0006a24000be20104017f017e017f027e230041106b22032400024020002001460d0042002104411021054200210603400240024020054102490d00200642088620044238888421062005417f6a2105200420003100008442088621040c010b024020054101460d00410041bad60010000b20003100002107200220063703082002200420078437030041102105200241106a210242002104420021060b200041016a22002001470d000b20054110460d00200320042006200541037441786a4100200541014b1b102b2002200341086a290300370308200220032903003703000b200341106a24000bfa0101037f230041c0006b2202210320022400024002400240101422040d00200341186a4200370300200341106a42003703002003420037030820034200370300410021020c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a200341186a4200370300200341106a420037030020034200370308200342003703002004411f4b0d010b410041c0d40010000b200341206a2002412010041a200341206a200341206a41206a2003109401024020044120460d00410041a6d500412e10160b20032003106e02402004418004490d002002450d00200210230b200341c0006a24000b6201027f0240200028028002220241086a418102490d00410041a5d000100020002802800221020b200020026a2103410721020340200320026a20013c0000200142088821012002417f6a2202417f470d000b200020002802800241086a360280020b5001017f23004190026b22062400200641046a200410980141a68203200120022003200628028802200628028c0220051017210402402006280284022205450d00200510290b20064190026a240020040ba10203057f027e017f230041206b220224002002210341022104200141106a220521060340200641086a290300210720062903002108410f21090340200320096a20083c000020084208882007423886842108200742088821072009417f6a2209417f470d000b200641106a2106200341106a21032004417f6a22040d000b20022103410221060340200541086a290300210720052903002108410f21090340200320096a20083c000020084208882007423886842108200742088821072009417f6a2209417f470d000b200541106a2105200341106a21032006417f6a22060d000b2000413436028802200041003602800220002000360284022002200041346a3602082002200036020420022000360200200220011099011a200241206a24000bda0102057f027e230041206b22022400200141106a210320002001109a01210420022105410221060340200341086a290300210720032903002108410f21000340200520006a20083c000020084208882007423886842108200742088821072000417f6a2200417f470d000b200341106a2103200541106a21052006417f6a22060d000b02402004280208200428020422006b411f4a0d00410041c2d0001000200428020421000b20002002412010041a2004200428020441206a3602042004200141306a109b01200141386a109c012100200241206a240020000b4001017f02402000280208200028020422026b41074a0d00410041c2d0001000200028020421020b20022001410810041a2000200028020441086a36020420000b4001017f02402000280208200028020422026b41074a0d00410041c2d0001000200028020421020b20022001410810041a2000200028020441086a36020420000b4001017f02402000280208200028020422026b41034a0d00410041c2d0001000200028020421020b20022001410410041a2000200028020441046a36020420000bb00401047f23004180036b220624000240200141e03f4b0d00200541ff014a0d00200641c0026a410041c00010011a200620053a00bf02200641003a00be02200620013a00bd02200620014108763a00bc0220064188026a42abb38ffc91a3b3f0db0037030020064180026a42ffa4b988c591da829b7f370300200641f8016a42f2e6bbe3a3a7fda7a57f370300200642e7cca7d0d6d0ebb3bb7f3703f001200642003703e801200641003602e001200641a0016a200641c0026a41c000109e01200641a0016a20022003109e01200641a0016a200641bc026a4103109e01200641a0016a20042005109e01200641a0016a200641bc026a41036a22074101109e01200641a0016a20064190026a109f01200641f0006a4100412110011a2001411f6a22034120490d0020034105762108200041606a2109410121000340410021030340200641f0006a20036a220220022d000020064190026a20036a2d0000733a0000200341016a22034120470d000b200620003a009001200642abb38ffc91a3b3f0db00370368200642ffa4b988c591da829b7f370360200642f2e6bbe3a3a7fda7a57f370358200642e7cca7d0d6d0ebb3bb7f37035020064200370348200641003602402006200641f0006a4121109e01200620042005109e01200620074101109e012006200641f0006a109f012009200041057422036a200641f0006a200120036b2203411f7520037141206a10041a20002008462103200041016a21002003450d000b0b20064180036a24000b6f01027f02402002450d0020002802402103034020012d000021042000200341016a360240200020036a20043a000002402000280240220341c000470d00200010a0014100210320004100360240200020002903484280047c3703480b200141016a21012002417f6a22020d000b0b0b5b01037f200010a101200041d0006a2102410021030340411820034103746b2104410021000340200120006a200220006a2802002004763a0000200041046a22004120470d000b200141016a2101200341016a22034104470d000b0bbe04010c7f230041a0026b2201240041002102410021030340200141206a20026a2000200341ff017122046a280000220341187420034180fe03714108747220034108764180fe037120034118767272360200200441046a2103200241046a220241c000470d000b41002102200128022021050340200141206a20026a220341c0006a200341386a2802002204410f772004410d77732004410a7673200341246a2802006a20056a200341046a28020022034119772003410e77732003410376736a36020020032105200241046a220241c001470d000b200041d0006a2102410021030340200120036a200220036a280200360200200341046a22034120470d000b41002104200128020c2106200128021c210720012802182105200128021421032001280210210820012802082109200128020421022001280200210a03402005210b200321052009220c2002220972200a220271200c200971722002411e772002411377732002410a77736a200b20082203417f7371200520037172200141206a20046a2802006a2003411a772003411577732003410777736a200441a4d2006a2802006a20076a22086a210a200820066a2108200b2107200c2106200441046a2204418002470d000b2001200b36021c20012005360218200120033602142001200836021020012009360208200120023602042001200a3602002001200c36020c200041d0006a2104410021030340200420036a22022002280200200120036a2802006a360200200341046a22034120470d000b200141a0026a24000bea0102027f027e2000200028024022016a22024180013a000002402001ad220342017c423842c00020014138491b22045a0d00200241016a21012003427f8520047c21030340200141003a0000200141016a21012003427f7c22034200520d000b0b0240200028024022014138490d00200010a00120004100413810011a200028024021010b200020002903482001410374ad7c22033c003f20002003370348200020034208883c003e200020034210883c003d200020034218883c003c200020034220883c003b200020034228883c003a200020034230883c0039200020034238883c0038200010a0010b6b03027f017e017f20012802042202200128020022036b41286dad2104200028020021010340200141016a2101200442ff005621052004420788210420050d000b20002001360200024020032002460d0003402000200310a6011a200341286a22032002470d000b0b20000b5f01027f230041106b220224002002200128020420012802006b41286d36020c20002002410c6a10a8011a02402001280200220320012802042201460d0003402000200310a9011a200341286a22032001470d000b0b200241106a240020000ba30201067f230041206b2202240002400240024020002802082203200028020422046b2001490d000340200441003a00002000200028020441016a22043602042001417f6a22010d000c020b0b2004200028020022056b220620016a2207417f4c0d012002411c6a200041086a360200410021040240200320056b220341017422052007200520074b1b41ffffffff07200341ffffffff03491b2203450d002003102721040b2002200436020c2002200420036a3602182002200420066a22043602100340200441003a0000200441016a21042001417f6a22010d000b2002200436021420002002410c6a10a5010240200228021420022802102201460d00200220013602140b200228020c2201450d00200110280b200241206a24000f0b2000103f000b890101037f200120012802042000280204200028020022026b22036b2204360204024020034101480d0020042002200310041a200128020421040b200028020021032000200436020020012003360204200028020421042000200128020836020420012004360208200028020821042000200128020c3602082001200436020c200120012802043602000b5802027f017e2000200110a70122022802002001411c6a28020022006a200128021822036b41086a2101200020036bad21040340200141016a2101200442ff005621002004420788210420000d000b2002200136020020020b7403017f017e017f200128020420012d0000220241017620024101711bad2103200028020021020340200241016a2102200342ff005621042003420788210320040d000b200020023602000240200128020420012d0000220441017620044101711b2204450d002000200420026a3602000b20000b860102027f017e230041106b220224002000280204210320013502002104034020022004a741ff0071200442ff00562201410774723a000f0240200028020820036b41004a0d00410041c2d0001000200028020421030b2004420788210420032002410f6a410110041a2000200028020441016a220336020420010d000b200241106a240020000b19002000200110aa01200141106a109a01200141186a10ab010ba30101037f230041106b220224002002200128020420012d0000220341017620034101711b36020c20002002410c6a10a8011a0240200128020420012d00002203410176200341017122041b2203450d002001280208200141016a20041b210402402000280208200028020422016b20034e0d00410041c2d0001000200028020421010b20012004200310041a2000200028020420036a3602040b200241106a240020000b7801037f230041106b220224002002200128020420012802006b36020c20002002410c6a10a8011a02402000280208200028020422036b2001280204200128020022046b22014e0d00410041c2d0001000200028020421030b20032004200110041a2000200028020420016a360204200241106a240020000b3401017f024020012802182202450d002001411c6a2002360200200210280b024020012d0000410171450d00200128020810280b0b960103037f017e017f230041106b2202240020012802042203200128020022046b410575ad2105200028020021010340200141016a2101200542ff005621062005420788210520060d000b20002001360200024020042003460d0003402000200028020041086a3602002002200036020c200441086a2002410c6a410110b001200441206a22042003470d000b0b200241106a240020000b7501027f230041106b220224002002200128020420012802006b4105753602082000200241086a10a8011a02402001280200220320012802042201460d0003402002200036020c20002003109a011a200341086a2002410c6a410110af01200341206a22032001470d000b0b200241106a240020000b5401017f230041106b22032400200128020021012003200028021036020c20012003410c6a10a8011a02402000280210417f470d0010b101000b20012000109c011a2001200041046a10ba011a200341106a24000b6503027f017e017f20012802002203280200210120002802102204ad21050340200141016a2101200542ff005621062005420788210520060d000b2003200136020002402004417f470d0010b101000b2003200141046a3602002003200041046a10b2011a0b05001003000b980103037f017e017f230041106b2202240020012802042203200128020022046b41386dad2105200028020021010340200141016a2101200542ff005621062005420788210520060d000b20002001360200024020042003460d0003402002200036020c20042002410c6a410110b301200228020c2201200128020041026a360200200441386a22042003470d000b0b200241106a240020000b8c0103037f017e017f230041106b2203240020012802002204280200210120002802302205ad21060340200141016a2101200642ff005621072006420788210620070d000b200420013602002003200436020802402005417f470d0010b101000b200541027441dcc2006a28020021012003200341086a36020c2003410c6a20002001110200200341106a24000b170020002802002802002200200028020041216a3602000b170020002802002802002200200028020041216a3602000b220020002802002802002200200028020041226a3602002000200141246a10a7011a0b170020002802002802002200200028020041216a3602000b170020002802002802002200200028020041206a3602000b20002000280200280200220041e100410120012802001b20002802006a3602000b7801027f230041106b220224002002200128020420012802006b41386d3602082000200241086a10a8011a02402001280200220320012802042201460d0003402002200036020c20032002410c6a410110bb01200228020c200341346a10bc011a200341386a22032001470d000b0b200241106a240020000b6f01017f230041106b2203240020012802002101200320002802303602082001200341086a10a8011a20032001360204024020002802302201417f470d0010b101000b2001410274418cc3006a28020021012003200341046a36020c2003410c6a20002001110200200341106a24000b4001017f02402000280208200028020422026b41014a0d00410041c2d0001000200028020421020b20022001410210041a2000200028020441026a36020420000b2c01017f200028020028020021024100210003402002200120006a10be011a200041016a22004121470d000b0b4001017f02402000280208200028020422026b41004a0d00410041c2d0001000200028020421020b20022001410110041a2000200028020441016a36020420000b2c01017f200028020028020021024100210003402002200120006a10be011a200041016a22004121470d000b0b3f01017f200028020028020021024100210003402002200120006a10be011a200041016a22004121470d000b2002200141216a10c101200141246a10aa011a0b4001017f02402000280208200028020422026b41004a0d00410041c2d0001000200028020421020b20022001410110041a2000200028020441016a36020420000b2c01017f200028020028020021024100210003402002200120006a10be011a200041016a22004121470d000b0b2c01017f200028020028020021024100210003402002200120006a10be011a200041016a22004120470d000b0b6201027f230041106b220224004100210320002802002802002100200220012802004100473a000f20002002410f6a10be011a024020012802002201450d0003402000200120036a10be011a200341016a220341e000470d000b0b200241106a24000bbd0101027f230041c0006b22022400024020002001107c200141086a10702200280208200028020422036b411f4b0d00410041c0d4001000200028020421030b200241206a2003412010041a2000200028020441206a360204200241206a200241206a41206a2002109401200141286a200241186a290300370300200141206a200241106a290300370300200141186a2002290308370300200120022903003703102000200141306a1076200141316a10762101200241c0006a240020010b5001017f23004190026b22062400200641046a200410c70141aaff00200120022003200628028802200628028c0220051017210402402006280284022205450d00200510290b20064190026a240020040ba10203057f027e017f230041206b220224002002210341022104200141106a220521060340200641086a290300210720062903002108410f21090340200320096a20083c000020084208882007423886842108200742088821072009417f6a2209417f470d000b200641106a2106200341106a21032004417f6a22040d000b20022103410221060340200541086a290300210720052903002108410f21090340200320096a20083c000020084208882007423886842108200742088821072009417f6a2209417f470d000b200541106a2105200341106a21032006417f6a22060d000b2000413436028802200041003602800220002000360284022002200041346a36020820022000360204200220003602002002200110c8011a200241206a24000bda0102057f027e230041206b22022400200141106a210320002001109a01210420022105410221060340200341086a290300210720032903002108410f21000340200520006a20083c000020084208882007423886842108200742088821072000417f6a2200417f470d000b200341106a2103200541106a21052006417f6a22060d000b02402004280208200428020422006b411f4a0d00410041c2d0001000200428020421000b20002002412010041a2004200428020441206a3602042004200141306a109b01200141386a109c012100200241206a240020000b6b01037f0240200120002802042202200028020022036b41306d22044d0d002000200120046b10cb010f0b0240200120044f0d00024020022003200141306c6a2201460d00200041086a210403402004200241506a220210cc0120022001470d000b0b200020013602040b0b20002000200110cd01200141106a1070200141186a10cd01200141246a10cd010bf20101067f230041206b22022400200041086a210302400240024020002802082204200028020422056b41306d2001490d0003402003200510ce012000200028020441306a22053602042001417f6a22010d000c020b0b2005200028020022066b41306d220720016a220541d6aad52a4f0d012002410c6a200420066b41306d220441017422062005200620054b1b41d5aad52a200441aad5aa15491b2007200310cf0122052802082103200541106a280200210403402004200310ce012005200528020841306a22033602082001417f6a22010d000b2000200510d001200510d1011a0b200241206a24000f0b2000103f000b4700024020012d0024410171450d002001412c6a28020010280b024020012d0018410171450d00200141206a28020010280b024020012d0000410171450d00200128020810280b0ba90401067f230041206b220224002002410036021c200242003702142000200241146a107b1a0240024002402002280218220320022802142204460d00200241106a410036020020024200370308200320046b220541704f0d02024002402005410a4b0d00200220054101743a0008200241086a41017221060c010b2005410f72220741016a102721062002200536020c2002200741026a360208200220063602100b0340200620042d00003a0000200641016a2106200441016a22042003470d000b200641003a0000024020012d0000410171450d00200128020841003a00002001410036020420012d0000410171450d00200128020810280b20012002290308370200200141086a200241086a41086a280200360200410021040340200241086a20046a4100360200200441046a2204410c470d000b20022d0008410171450d01200228021010280c010b200241106a410036020020024200370308410021040340200241086a20046a4100360200200441046a2204410c470d000b024020012d0000410171450d00200128020841003a00002001410036020420012d0000410171450d00200128020810280b20012002290308370200200141086a200241086a41086a280200360200410021040340200241086a20046a4100360200200441046a2204410c470d000b20022d0008410171450d00200228021010280b024020022802142204450d0020022004360218200410280b200241206a240020000f0b200241086a102e000ba30101027f20014200370300200141086a4200370300410021020340200120026a4100360200200241046a2202410c470d000b2001420037031820014200370310200141206a4100360200200141186a2103410021020340200320026a4100360200200241046a2202410c470d000b200142003702242001412c6a4100360200200141246a2101410021020340200120026a4100360200200241046a2202410c470d000b0b6701017f410021042000410036020c200041106a2003360200024002402001450d00200141d6aad52a4f0d01200141306c102721040b2000200436020020002004200241306c6a220336020820002004200141306c6a36020c2000200336020420000f0b1003000b9f0101047f2001280204210202402000280204220320002802002204460d00200041086a210503402005200241506a200341506a220310d2012001200128020441506a220236020420032004470d000b200028020021040b2000200236020020012004360204200028020421032000200128020836020420012003360208200028020821032000200128020c3602082001200336020c200120012802043602000b1c01017f200010d301024020002802002201450d00200110280b20000bc10101027f20012002290300370300200141086a200241086a280200360200410021030340200220036a4100360200200341046a2203410c470d000b2001200229031037031020012002290318370318200141206a200241206a280200360200200241186a2104410021030340200420036a4100360200200341046a2203410c470d000b200120022902243702242001412c6a2002412c6a280200360200200241246a2102410021030340200220036a4100360200200341046a2203410c470d000b0b3d01027f02402000280208220120002802042202460d0003402000200141506a22013602082000280210200110cc01200028020822012002470d000b0b0b3d01027f02402000280208220120002802042202460d0003402000200141586a22013602082000280210200110ac01200028020822012002470d000b0b0b5d01037f02402000280204220120002802002202460d002001416c6a2101034002402001410c6a2203280200417f460d00200110d6011a0b2003417f360200200141746a2103200141606a210120032002470d000b0b200020023602040b1b0002402000280200450d00200010d701200028020010280b20000b7d01057f230041106b2201240002402000280204220220002802002203460d00200241486a210203400240200241306a22042802002205417f460d002001410f6a2002200541027441d8d5006a2802001102000b2004417f36020020022003472104200241486a210220040d000b0b20002003360204200141106a24000b02000b02000b1a00024020012d0024410171450d002001412c6a28020010280b0b02000b02000b0800200110de011a0b3701027f024020002802042201450d00200120012802042202417f6a36020420020d00200120012802002802081101002001103d0b20000b9e0201057f230041206b2202240002400240024020002802082203200028020422046b4105752001490d00034020044200370300200441186a4200370300200441106a4200370300200441086a42003703002000200028020441206a22043602042001417f6a22010d000c020b0b2004200028020022056b410575220620016a220441808080c0004f0d012002410c6a200320056b220341047522052004200520044b1b41ffffff3f200341e0ffffff07491b2006200041086a10e00122032802082104034020044200370300200441186a4200370300200441106a4200370300200441086a4200370300200441206a21042001417f6a22010d000b200320043602082000200310e101200310e2011a0b200241206a24000f0b2000103f000b6801017f410021042000410036020c200041106a2003360200024002402001450d00200141808080c0004f0d012001410574102721040b200020043602002000200420024105746a22033602082000200420014105746a36020c2000200336020420000f0b1003000bab0101047f2001280204210202402000280204220320002802002204460d000340200241606a200341606a2205290300370300200241686a200341686a10e3011a2001200128020441606a22023602042005210320052004470d000b200028020021040b2000200236020020012004360204200028020421022000200128020836020420012002360208200028020821022000200128020c3602082001200236020c200120012802043602000b2101017f2000200028020410e401024020002802002201450d00200110280b20000b7e01027f2000417f360210200041003a0000024020012802102202417f460d0020004100360204200041086a22034200370200200020012802043602042003200141086a2802003602002000410c6a2001410c6a2203280200360200200020012802003602002000200236021020034100360200200142003702040b20000b5601037f0240200028020822022001460d0003402000200241606a22033602080240200341186a2204280200417f460d002002416c6a10d6011a200028020821030b2004417f3602002003210220032001470d000b0b0b960101017f230041106b220324000240024020020d002003410c6a410036020020034200370204200020031090011a2000200341046a220210e6011a02402001280210417f460d00200141046a10d6011a0b2001200329020037020020014100360210200141086a20032902083702002003410036020420034200370208200210d6011a0c010b410041a4d60010000b200341106a24000b7601027f230041106b220224002002410036020020002002107c1a2001200228020010e70102402001280200220320012802042201460d00034020022000360204200220033602082002200341346a36020c200241086a200241046a10e801200341386a22032001470d000b0b200241106a240020000bad0101047f230041106b2202240002400240200120002802042203200028020022046b41386d22054d0d002000200120056b10e9010c010b200120054f0d00024020032004200141386c6a2204460d00200341486a210103400240200141306a22052802002203417f460d002002410f6a2001200341027441d8d5006a2802001102000b2005417f36020020012004472105200141486a210120050d000b0b200020043602040b200241106a24000b4d01037f230041106b2202240020002802002103200128020021042002410036020c20042002410c6a107c1a20042003200228020c10f501200128020020002802041091011a200241106a24000be40101057f230041206b2202240002400240024020002802082203200028020422046b41386d2001490d00034020044100413810011a2000200028020441386a22043602042001417f6a22010d000c020b0b2004200028020022056b41386d220620016a220441a592c9244f0d012002410c6a200320056b41386d220341017422052004200520044b1b41a492c92420034192c9a412491b2006200041086a10ea01220328020821040340200441004138100141386a21042001417f6a22010d000b200320043602082000200310eb01200310ec011a0b200241206a24000f0b2000103f000b6701017f410021042000410036020c200041106a2003360200024002402001450d00200141a592c9244f0d01200141386c102721040b2000200436020020002004200241386c6a220336020820002004200141386c6a36020c2000200336020420000f0b1003000b6d01017f200041086a20002802002000280204200141046a10ed01200028020021022000200128020436020020012002360204200028020421022000200128020836020420012002360208200028020821022000200128020c3602082001200236020c200120012802043602000b1c01017f200010ee01024020002802002201450d00200110280b20000baf0101067f230041106b22042400024020022001460d00200241486a2102200328020021050340200541486a220641003a0000200641306a2207417f3602000240200241306a22082802002209417f460d002004410f6a20062002200941027441f0d5006a280200110300200720082802003602000b2005417c6a200241346a2f01003b01002003200328020041486a220536020020022001472106200241486a210220060d000b0b200441106a24000b7701057f230041106b2201240002402000280208220220002802042203460d0003402000200241486a22023602080240200241306a22042802002205417f460d002001410f6a2002200541027441d8d5006a280200110200200028020821020b2004417f36020020022003470d000b0b200141106a24000b0b0020012002412110041a0b0b0020012002412110041a0b480020012002412210042201412c6a2002412c6a28020036020020012002290224370224200241246a2101410021020340200120026a4100360200200241046a2202410c470d000b0b0b0020012002412110041a0b3c0020012002290200370200200141186a200241186a290200370200200141106a200241106a290200370200200141086a200241086a2902003702000b130020012002290200370200200242003702000b7f01017f230041306b220324000240024020020d0041002102034020002003410e6a20026a10761a200241016a22024121470d000b024020012802302202417f460d002003412f6a2001200241027441d8d5006a2802001102000b20012003410e6a4121100441003602300c010b20002001200210f6010b200341306a24000b820101017f230041306b220324000240024020024101470d0041002102034020002003410e6a20026a10761a200241016a22024121470d000b024020012802302202417f460d002003412f6a2001200241027441d8d5006a2802001102000b20012003410e6a4121100441013602300c010b20002001200210f7010b200341306a24000ba00201027f230041c0006b220324000240024020024102470d00200341386a410036020020034200370230412421022003410c6a41246a210403402003410c6a20026a4100360200200241046a22024130470d000b41002102034020002003410c6a20026a10761a200241016a22024121470d000b20002003412d6a10f801200410cd011a024020012802302202417f460d002003413f6a2001200241027441d8d5006a2802001102000b20012003410c6a412210042200412c6a200441086a280200360200200020042902003702244124210203402003410c6a20026a4100360200200241046a22024130470d000b2000410236023020032d0030410171450d01200341386a28020010280c010b20002001200210f9010b200341c0006a24000b3d01017f0240200028020820002802042202470d00410041c0d4001000200028020421020b20012002410110041a2000200028020441016a36020420000b820101017f230041306b220324000240024020024103470d0041002102034020002003410e6a20026a10761a200241016a22024121470d000b024020012802302202417f460d002003412f6a2001200241027441d8d5006a2802001102000b20012003410e6a4121100441033602300c010b20002001200210fa010b200341306a24000bbc0101017f230041306b220324000240024020024104470d0041002102034020002003410f6a20026a10761a200241016a22024120470d000b024020012802302202417f460d002003412f6a2001200241027441d8d5006a2802001102000b2001200329000f37000020014104360230200141186a2003410f6a41186a290000370000200141106a2003410f6a41106a290000370000200141086a2003410f6a41086a2900003700000c010b20002001200210fb010b200341306a24000b840101017f230041106b220324000240024020024105470d00200342003702042000200341046a10fc011a024020012802302202417f460d002003410f6a2001200241027441d8d5006a2802001102000b200120032902043702002001410536023020034200370204200341046a10de011a0c010b410041a4d60010000b200341106a24000be30102037f017e230041106b220224002000200241086a10761a0240024020022d0008450d000240200128020022030d0041ec00102722034190d600360200200342003702042003410c6a410041e000100121042001290200210520012004360200200120033602042002420037020020022005370208200241086a10de011a200210de011a200128020021030b4100210103402000200320016a10761a200141016a220141e000470d000c020b0b20012902002105200142003702002002420037020020022005370208200241086a10de011a200210de011a0b200241106a240020000b08002000103c10280b02000b0600200010280b800101057f230041106b2201240002402000280204220220002802002203460d00200241486a210203400240200241306a22042802002205417f460d002001410f6a2002200541027441d8d5006a2802001102000b2004417f360200200241786a2104200241406a210220042003470d000b0b20002003360204200141106a24000be60101057f230041206b2202240002400240024020002802082203200028020422046b4106752001490d0003402004410041c00010011a2000200028020441c0006a22043602042001417f6a22010d000c020b0b2004200028020022056b410675220620016a220441808080204f0d012002410c6a200320056b220341057522052004200520044b1b41ffffff1f200341c0ffffff07491b2006200041086a1082022203280208210403402004410041c000100141c0006a21042001417f6a22010d000b200320043602082000200310830220031084021a0b200241206a24000f0b2000103f000b6701017f410021042000410036020c200041106a2003360200024002402001450d00200141808080204f0d012001410674102721040b200020043602002000200420024106746a22033602082000200420014106746a36020c2000200336020420000f0b1003000b6d01017f200041086a20002802002000280204200141046a108502200028020021022000200128020436020020012002360204200028020421022000200128020836020420012002360208200028020821022000200128020c3602082001200236020c200120012802043602000b1c01017f2000108602024020002802002201450d00200110280b20000bb10101057f230041106b22042400024020022001460d00200241406a2102200328020021050340200541406a22052002290300370300200541386a2206417f360200200541086a220541003a00000240200241386a22072802002208417f460d002004410f6a2005200241086a200841027441f0d5006a280200110300200620072802003602000b2003200328020041406a220536020020022001472106200241406a210220060d000b0b200441106a24000b7e01067f230041106b2201240002402000280208220220002802042203460d0003402000200241406a22043602080240200441386a22052802002206417f460d002001410f6a200241486a200641027441d8d5006a280200110200200028020821040b2005417f3602002004210220042003470d000b0b200141106a24000bab040020001043024020012000520d00024002400240024002400240024002400240200242ffffff95cdebd4d942550d000240200242fffffffffff698d942550d0002402002428fa9d9d9dd8c99d6ba7f550d00200242808080e8b2edc0d38b7f510d032002428080f9d4a98499dc9a7f520d0a20012001106f0f0b20024290a9d9d9dd8c99d6ba7f510d0320024280808080daac9bd6ba7f520d09200120011092010f0b0240200242ffffffffd3c4a2d942550d002002428080808080f798d942510d042002428080b8f6a4979ad942520d0920012001107f0f0b20024280808080d4c4a2d942510d04200242f0aadf8bcde9add942520d0820012001108b010f0b0240200242ffffacd68db8baf154550d000240200242ffdfde8293fad6d942550d0020024280808096cdebd4d942510d0620024280808080b6f7d6d942520d0920012001107e0f0b20024280e0de8293fad6d942510d06200242808080c093fad6d942520d08200120011081010f0b0240200242ffffffcfb2b3bb9932550d002002428080add68db8baf154510d072002428080add68d959ba955520d082001200110710f0b02402002428080add68d95abd1ca00510d00200242808080d0b2b3bb9932520d08200120011093010f0b2001200110720f0b2001200110730f0b200120011095010f0b20012001107a0f0b2001200110750f0b20012001108e010f0b200120011086010f0b2001200110740f0b2001428080808080c0bad847510d0041004201101d0b0b0d00101e2000200120021087020b0b971706004180c0000b4a6661696c656420746f20616c6c6f6361746520706167657300656e636f756e7465726564206e6f6e2d62617365363420636861726163746572005055425f424c535f00000000000000000041cac0000bdf0200000000000030303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839396461746173747265616d20617474656d7074656420746f20777269746520706173742074686520656e6400000100000002000000030000000400000005000000060000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000700000008000000090000000a0000000b0000000c00000000000000000041a9c3000b81080000000000000000000000020000000300000005000000070000000b0000000d0000001100000013000000170000001d0000001f00000025000000290000002b0000002f000000350000003b0000003d0000004300000047000000490000004f00000053000000590000006100000065000000670000006b0000006d000000710000007f00000083000000890000008b00000095000000970000009d000000a3000000a7000000ad000000b3000000b5000000bf000000c1000000c5000000c7000000d3000000010000000b0000000d0000001100000013000000170000001d0000001f00000025000000290000002b0000002f000000350000003b0000003d0000004300000047000000490000004f00000053000000590000006100000065000000670000006b0000006d00000071000000790000007f00000083000000890000008b0000008f00000095000000970000009d000000a3000000a7000000a9000000ad000000b3000000b5000000bb000000bf000000c1000000c5000000c7000000d1000000404040404040404040404040404040404040404040404040404040404040404040404040404040404040403e4040403f3435363738393a3b3c3d40404040404040000102030405060708090a0b0c0d0e0f101112131415161718194040404040401a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040403e40403435363738393a3b3c3d40404040404040000102030405060708090a0b0c0d0e0f10111213141516171819404040403f401a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132334040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404077726f6e6720656e636f64656420737472696e672073697a65005349475f424c535f00424c535f5349475f424c53313233383147325f584d443a5348412d3235365f535357555f524f5f4e554c5f00424c535f504f505f424c53313233383147325f584d443a5348412d3235365f535357555f524f5f504f505f0041aacb000b820800bbc622db0af03afbef1a7af93fe8556c58ac1b173f3a4ea105b974974f8c68c30faca94f8c63952694d79731a7d3f117cac239b9d6dc54ad1b75cb0eba386f4e3642accad5b95566c907b51def6a8167f2212ecfc8767daaa845d555681d4d116e756d626572206f662066696e616c697a657273206578636565647320746865206d6178696d756d20616c6c6f7765640072657175697265206174206c65617374206f6e652066696e616c697a6572005055425f424c53005349475f424c530046696e616c697a6572206465736372697074696f6e2067726561746572207468616e206d617820616c6c6f7765642073697a65007075626c6963206b65792073686f756c642073746172742077697468205055425f424c530070726f6f66206f6620706f7373657373696f6e207369676e61747572652073686f756c642073746172742077697468205349475f424c530073756d206f662077656967687473206361757365732075696e7436345f74206f766572666c6f77006475706c6963617465207075626c6963206b65790070726f6f66206f6620706f7373657373696f6e206661696c65640066696e616c697a657220706f6c696379207468726573686f6c64206d7573742062652067726561746572207468616e2068616c66206f66207468652073756d206f662074686520776569676874732c20616e64206c657373207468616e206f7220657175616c20746f207468652073756d206f66207468652077656967687473006665617475726520646967657374206163746976617465643a20000a0070726f746f636f6c2066656174757265206973206e6f7420616374697661746564004b5620777269746520726566757365640062655f6b65795f73747265616d3a206b657920746f6f206c61726765006461746173747265616d20617474656d7074656420746f20777269746520706173742074686520656e6400656e636f64656420626173653634206b657920697320746f6f2073686f72740062617365363420656e636f6465642074797065206d75737420626567696e2066726f6d20636f72726573706f6e64696e6720707265666978006465636f6465642073697a65200020646f65736e2774206d61746368207374727563747572652073697a652000202b20636865636b73756d2000636865636b73756d206f662073747275637475726520646f65736e2774206d6174636800982f8a4291443771cffbc0b5a5dbb5e95bc25639f111f159a4823f92d55e1cab98aa07d8015b8312be853124c37d0c55745dbe72feb1de80a706dc9b74f19bc1c1699be48647beefc69dc10fcca10c246f2ce92daa84744adca9b05cda88f97652513e986dc631a8c82703b0c77f59bff30be0c64791a7d55163ca0667292914850ab72738211b2e0041acd3000bba03fc6d2c4d130d385354730a65bb0a6a762ec9c281852c7292a1e8bfa24b661aa8708b4bc2a3516cc719e892d1240699d685350ef470a06a1016c1a419086c371e4c774827b5bcb034b30c1c394aaad84e4fca9c5bf36f2e68ee828f746f63a5781478c8840802c78cfaffbe90eb6c50a4f7a3f9bef27871c67075626c6963206b65792068617320612077726f6e672073697a65006461746173747265616d20617474656d7074656420746f207265616420706173742074686520656e640048797065727669736f722072657475726e656420756e657870656374656420636f64652068617368207374727563742076657273696f6e0067657400616374696f6e206461746120686173206279746573206c6566742061667465722074686520617267756d656e747300000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e00000000000000000000001f00000020000000210000002200000023000000696e76616c69642076617269616e7420696e64657800756e6578706563746564206572726f7220696e2066697865645f627974657320636f6e7374727563746f72000041000b04002d0000000000000000000001d00f01e1c802003bcc58bad333d63bcbe25dfd4b230bd7a3c36ff3d78b4e92a35ba9bb25ab245e03000000020000000100000003f59d37dbcd0eca11fe31f0d96f99c331f73a937c0529569c90bb2414010000000000eab0c7b866060000000000000000000000 -DMLOG CREATION_OP ROOT 0 -DMLOG RAM_OP 0 sysio abi update setabi sysio 423252 573 -DMLOG KV_OP INS 0 sysio sysio 49446 c7b0ea0000000000 0000000000eab0c7e22bb59751ccd78ae3af94a491aacf0c712b334ddd155ba54a4319e949d3979040a21bba992a060003000000 -DMLOG RAM_OP 0 sysio:49446:c7b0ea0000000000 table_row add primary_index_add sysio 423424 172 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":2,"value_ex":259608,"consumed":44860},"cpu_usage":{"last_ordinal":2,"value_ex":24307,"consumed":4101},"ram_usage":423424} -DMLOG APPLIED_TRANSACTION 3 1b21c787d18502663f0c5eb907d55659f7fbd17d151d53af4a16ddd63f22492b03000000020000000100000003f59d37dbcd0eca11fe31f0d96f99c331f73a937c0529569c90bb24140101d00fd00f0000000000000000db0a00000000000001010000010000000000eab0c751712dd441174d2b031b3cef8950abdd28ddf740a89e4febafee976fd337799304000000000000000400000000000000010000000000eab0c7040000000000000001010000000000eab0c70000000000eab0c700000000b863b2c2010000000000eab0c700000000a8ed3232d6140000000000eab0c7cc140e737973696f3a3a6162692f312e320117626c6f636b5f7369676e696e675f617574686f726974792276617269616e745f626c6f636b5f7369676e696e675f617574686f726974795f76301e086162695f686173680004056f776e6572046e616d6504686173680b636865636b73756d3235360a757064617465645f61740a74696d655f706f696e7409626c6f636b5f6e756d0675696e7433320b616269686173685f6b65790001056f776e65720675696e74363408616374697661746500010e666561747572655f6469676573740b636865636b73756d32353609617574686f726974790003097468726573686f6c640675696e743332046b6579730c6b65795f7765696768745b5d086163636f756e7473197065726d697373696f6e5f6c6576656c5f7765696768745b5d1a626c6f636b5f7369676e696e675f617574686f726974795f76300002097468726573686f6c640675696e743332046b6579730c6b65795f7765696768745b5d15626c6f636b636861696e5f706172616d65746572730011136d61785f626c6f636b5f6e65745f75736167650675696e7436341a7461726765745f626c6f636b5f6e65745f75736167655f7063740675696e743332196d61785f7472616e73616374696f6e5f6e65745f75736167650675696e743332106e65745f75736167655f6c65657761790675696e743332136d61785f626c6f636b5f6370755f75736167650675696e7433321a7461726765745f626c6f636b5f6370755f75736167655f7063740675696e743332196d61785f7472616e73616374696f6e5f6370755f75736167650675696e743332196d696e5f7472616e73616374696f6e5f6370755f75736167650675696e743332186d61785f7472616e73616374696f6e5f6c69666574696d650675696e743332156d61785f7472616e73616374696f6e5f64656c61790675696e743332166d61785f696e6c696e655f616374696f6e5f73697a650675696e743332176d61785f696e6c696e655f616374696f6e5f64657074680675696e743136136d61785f617574686f726974795f64657074680675696e7431361c6d61785f616374696f6e5f72657475726e5f76616c75655f73697a650675696e7433320f6d61785f6b765f6b65795f73697a650675696e743332116d61785f6b765f76616c75655f73697a650675696e743332196d61785f6b765f7365636f6e646172795f6b65795f73697a650675696e74333209636f64655f686173680004056f776e6572046e616d6504686173680b636865636b73756d3235360a757064617465645f61740a74696d655f706f696e7409626c6f636b5f6e756d0675696e7433320c636f6465686173685f6b65790001056f776e65720675696e7436340a64656c657465617574680002076163636f756e74046e616d650a7065726d697373696f6e046e616d651366696e616c697a65725f617574686f7269747900040b6465736372697074696f6e06737472696e67067765696768740675696e7436340a7075626c69635f6b657906737472696e6703706f7006737472696e671066696e616c697a65725f706f6c6963790002097468726573686f6c640675696e7436340a66696e616c697a6572731566696e616c697a65725f617574686f726974795b5d0a6b65795f7765696768740002036b65790a7075626c69635f6b6579067765696768740675696e743136086c696e6b617574680004076163636f756e74046e616d6504636f6465046e616d650474797065046e616d650b726571756972656d656e74046e616d650a6e65776163636f756e7400040763726561746f72046e616d65046e616d65046e616d65056f776e657209617574686f726974790661637469766509617574686f72697479107065726d697373696f6e5f6c6576656c0002056163746f72046e616d650a7065726d697373696f6e046e616d65177065726d697373696f6e5f6c6576656c5f77656967687400020a7065726d697373696f6e107065726d697373696f6e5f6c6576656c067765696768740675696e7431361270726f64756365725f617574686f7269747900020d70726f64756365725f6e616d65046e616d6509617574686f7269747917626c6f636b5f7369676e696e675f617574686f726974790c70726f64756365725f6b657900020d70726f64756365725f6e616d65046e616d6511626c6f636b5f7369676e696e675f6b65790a7075626c69635f6b65790c72657161637469766174656400010e666561747572655f6469676573740b636865636b73756d323536077265716175746800010466726f6d046e616d65067365746162690002076163636f756e74046e616d65036162690562797465730a736574616c696d6974730004076163636f756e74046e616d650972616d5f627974657305696e7436340a6e65745f77656967687405696e7436340a6370755f77656967687405696e74363407736574636f64650004076163636f756e74046e616d6506766d747970650575696e743809766d76657273696f6e0575696e743804636f64650562797465730c73657466696e616c697a657200011066696e616c697a65725f706f6c6963791066696e616c697a65725f706f6c69637909736574706172616d73000106706172616d7315626c6f636b636861696e5f706172616d657465727307736574707269760002076163636f756e74046e616d650769735f707269760575696e74380b73657470726f646b6579730001087363686564756c650e70726f64756365725f6b65795b5d0873657470726f64730001087363686564756c651470726f64756365725f617574686f726974795b5d0a756e6c696e6b617574680003076163636f756e74046e616d6504636f6465046e616d650474797065046e616d650a757064617465617574680004076163636f756e74046e616d650a7065726d697373696f6e046e616d6506706172656e74046e616d65046175746809617574686f72697479100000002a9bed3232086163746976617465000040cbdaa8aca24a0a64656c65746561757468000000002d6b03a78b086c696e6b617574680000409e9a2264b89a0a6e65776163636f756e7400905436db6564acba0c72657161637469766174656400000000a0656dacba07726571617574680000000000b863b2c206736574616269000000ce4eba68b2c20a736574616c696d6974730000000040258ab2c207736574636f64650070d577d14cb7b2c20c73657466696e616c697a6572000000c0d25c53b3c209736574706172616d730000000060bb5bb3c207736574707269760000b05730d15bb3c20b73657470726f646b6579730000000038d15bb3c20873657470726f6473000040cbdac0e9e2d40a756e6c696e6b61757468000040cbdaa86c52d50a75706461746561757468000207616269686173680369363401056f776e6572010675696e743634086162695f6861736826c10008636f6465686173680369363401056f776e6572010675696e74363409636f64655f68617368aa3f00000000012276617269616e745f626c6f636b5f7369676e696e675f617574686f726974795f7630011a626c6f636b5f7369676e696e675f617574686f726974795f7630000000000000000000000001d00f01db15001b21c787d18502663f0c5eb907d55659f7fbd17d151d53af4a16ddd63f22492b03000000020000000100000003f59d37dbcd0eca11fe31f0d96f99c331f73a937c0529569c90bb2414010000000000eab0c7e902000000000000000000000000 -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":2,"value_ex":0,"consumed":0},"average_block_cpu_usage":{"last_ordinal":2,"value_ex":833334,"consumed":100},"pending_net_usage":44860,"pending_cpu_usage":4100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1049625,"virtual_cpu_limit":200200} -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":3,"value_ex":373833334,"consumed":44860},"average_block_cpu_usage":{"last_ordinal":3,"value_ex":34993056,"consumed":4101},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1050675,"virtual_cpu_limit":200400} -DMLOG ACCEPTED_BLOCK_V2 00000003f59d37dbcd0eca11fe31f0d96f99c331f73a937c0529569c90bb2414 3 1 020000000000000000eab0c70000000261e1e9fd247d62d5d0659aec25d2501fb9a24d489439cce4a807c56a38fc2266fee5def676c7951b9900d4fc104b9b7bd7ba7efb41440c2c4f26087000000000000000000000000000000000000000000000000000000000000000000100000000000000010020136d81a007bc2a101dea0f4e267ad7edee5f0cf57c947b7660617840cc0cddd4718927ab4098381cf853e42a403bc0e5e14486f91e059ae3f367118ac08ea3790201d00f01001fe99d98958559c515d32d2b1b17beb10bdb5b5c5a2b59d1dfac2a41935179e27c72bcfe78673aa9d96e37930e05846c3fda91d6bc3cbda7065d63113e6a04471800008fc802868574670200247d62d500000000010000000000eab0c700000040258ab2c2010000000000eab0c700000000a8ed3232dbc7020000000000eab0c70000cec7020061736d0100000001e1012160000060017f0060027f7f0060037f7f7f0060037f7f7f017f60027f7f017e6000017e6000017f60017e0060037e7f7f0060077f7f7f7f7f7f7f017f60027e7f0060047e7e7e7e0060037e7f7f017e60017f017f60027f7f017f60077f7e7f7f7f7f7f017f60047f7f7f7f017f60067f7f7f7f7f7f017f60047e7f7f7f017f60027f7e0060047f7e7e7f0060057f7f7f7f7f017f60087f7f7f7f7f7f7f7f0060077f7f7f7f7f7f7f0060017d017d60047f7f7f7f0060037f7e7f0060047f7e7f7f0060027e7e0060067f7e7f7f7f7f017f60067f7f7f7f7f7f0060037e7e7e0002df041e03656e760c737973696f5f617373657274000203656e76066d656d736574000403656e76076d656d6d6f7665000403656e760561626f7274000003656e76066d656d637079000403656e7606736861323536000303656e7609726970656d64313630000303656e76207365745f626c6f636b636861696e5f706172616d65746572735f7061636b6564000203656e76167365745f70726f706f7365645f70726f647563657273000503656e760c63757272656e745f74696d65000603656e760d6765745f626c6f636b5f6e756d000703656e760c726571756972655f61757468000803656e760e7365745f66696e616c697a657273000903656e760b626c735f70616972696e67000a03656e760e7365745f70726976696c65676564000b03656e76137365745f7265736f757263655f6c696d697473000c03656e76197365745f70726f706f7365645f70726f6475636572735f6578000d03656e761370726561637469766174655f66656174757265000103656e76067072696e7473000103656e761469735f666561747572655f616374697661746564000e03656e7610616374696f6e5f646174615f73697a65000703656e7610726561645f616374696f6e5f64617461000f03656e7614737973696f5f6173736572745f6d657373616765000303656e76066b765f736574001003656e760a626c735f66705f6d6f64001103656e760a626c735f67325f6d6170001103656e760a626c735f67325f616464001203656e760d6765745f636f64655f68617368001303656e76087072696e74686578000203656e7611737973696f5f6173736572745f636f6465001403ed01eb010001010e0f0100040e0e010104150f0f010f16171802040f0211040402020e010f01030f0308010f02020206190e1a000f0100010001000100020100011b1c020203030f0f020e11020e030302020202021d0f1d1d1d1d1d0f1c1b1c1d0f0f021d1d0f1d0f0e02021d0f0e02021d0f0e1d0f0f0f1d1d031d141e020f0f0f0f1f030201010f0f02020f0f0f0f0f0f020f0f0303000f030202020202020f030f020f02020f0202020f1e020f020f02020f0211020e030101010e010202020202020e0211020e0f02030f02020211020e1a010303030303030303030f0303030f010101010211020e1a0120200405017001242405030100010616037f014180c0000b7f0041f8d9000b7f004180da000b072e04066d656d6f727902000a5f5f646174615f656e6403010b5f5f686561705f626173650302056170706c790088020944010041010b23b401b501b601b701b801b901bd01bf01c001c201c301c4014f515355585ad801d901da01db01dc01dd01ef01f001f101f201f301f4013cfd01fe013eff010ad8a602eb0110001024104d105010521054105610590b0900200041013602000b0900200041003602000b7201037f024020000d0041000f0b410041002802f456200041107622016a22023602f456410041002802ec56220320006a410f6a41707122003602ec560240200241107420004b0d004100200241016a3602f456200141016a21010b024020014000417f470d0041004180c00010000b20030b8a0101037f0240200120006c22000d0041000f0b410041002802f456200041107622026a22033602f456410041002802ec56220120006a410f6a41707122043602ec560240200341107420044b0d004100200341016a3602f456200241016a21020b024020024000417f470d0041004180c00010000b024020010d0041000f0b20014100200010011a20010b02000b3601017f230041106b2200410036020c4100200028020c280200410f6a41707122003602e856410020003602ec5641003f003602f4560b990101037f41f8d600101f024041002802805722030d004188d700210341004188d700360280570b0240024041002802845722044120470d0002404184024101102222030d00417f21050c020b41002104200341002802805736020041002003360280570b410021054100200441016a36028457200320044102746a22034184016a2001360200200341046a20003602000b41f8d600102020050bcc0101037f20002101024002402000410371450d00024020002d00000d00200020006b0f0b200041016a2201410371450d0020012d0000450d01200041026a2201410371450d0020012d0000450d01200041036a2201410371450d0020012d0000450d01200041046a22014103710d010b2001417c6a21022001417b6a21010340200141046a2101200241046a22022802002203417f73200341fffdfb776a7141808182847871450d000b0340200141016a210120022d00002103200241016a210220030d000b0b200120006b0b3601027f20004101200041014b1b2101024003402001102122000d0141002100410028028c592202450d0120021100000c000b0b20000b0600200010230b0600200010280b4901037f4100210302402002450d000240034020002d0000220420012d00002205470d01200141016a2101200041016a21002002417f6a22020d000c020b0b200420056b21030b20030b6a01017e4200210402400240200341ff004d0d00420021020c010b024020030d00200121040c010b02402003413f4b0d00200141c00020036bad8820022003ad220486842102200120048621040c010b2001200341406aad8621020b20002002370308200020043703000bf90101027f0240200041ffc1d72f4b0d0020012000102d0f0b200020004180c2d72f6e22024180c2d72f6c6b210302400240200041ff93ebdc034b0d00200120024130723a0000410121000c010b410221002001200241017441d0c0006a410210041a0b200120006a220020034190ce006e220141ffff037141e4006e220241017441d0c0006a410210041a200041026a2001200241e4006c6b41017441feff037141d0c0006a410210041a200041046a200320014190ce006c6b220141ffff037141e4006e220341017441d0c0006a410210041a200041066a2001200341e4006c6b41017441feff037141d0c0006a410210041a200041086a0bda0301027f02402001418fce004b0d000240200141e3004b0d000240200141094b0d00200020014130723a0000200041016a0f0b2000200141017441d0c0006a410210041a200041026a0f0b200141ffff0371220241e4006e21030240200141e7074b0d00200020034130723a0000200041016a200241e4007041017441d0c0006a410210041a200041036a0f0b2000200341017441d0c0006a410210041a200041026a2001200341e4006c6b41017441feff037141d0c0006a410210041a200041046a0f0b20014190ce006e210302400240200141bf843d4b0d0002402001419f8d064b0d00200020034130723a0000410121020c020b410221022000200341017441d0c0006a410210041a0c010b0240200141fface2044b0d002000200341ffff037141e4006e22024130723a0000200041016a2003200241e4006c6b41017441feff037141d0c0006a410210041a410321020c010b2000200141c0843d6e41017441d0c0006a410210041a200041026a200341e4007041017441d0c0006a410210041a410421020b200020026a2200200120034190ce006c6b220141ffff037141e4006e220341017441d0c0006a410210041a200041026a2001200341e4006c6b41017441feff037141d0c0006a410210041a200041046a0b05001003000bbb0101037f20004200370200200041086a22024100360200024020012d00004101710d00200020012902003702002002200141086a28020036020020000f0b02402001280204220241704f0d00200128020821030240024002402002410b490d002002410f72220441016a10272101200020023602042000200441026a360200200020013602080c010b200020024101743a0000200041016a21012002450d010b20012003200210041a0b200120026a41003a000020000f0b1003000bc50101047f20004200370200200041086a41003602000240200128020420012d00002205410176200541017122061b22052002490d00200520026b2205200320052003491b220341704f0d00200128020821070240024002402003410b490d002003410f72220841016a10272105200020033602042000200841026a360200200020053602080c010b200020034101743a0000200041016a21052003450d010b20052007200141016a20061b20026a200310041a0b200520036a41003a000020000f0b1003000bfc0101047f0240416e20016b2002490d00200041016a210820002d000041017121092000280208210a416f210b0240200141e6ffffff074b0d00410b200220016a22022001410174220b2002200b4b1b2202410f7241016a2002410b491b210b0b200a200820091b2108200b1027210202402004450d0020022008200410041a0b02402006450d00200220046a2007200610041a0b2003200520046a220a6b210902402003200a460d00200220046a20066a200820046a20056a200910041a0b02402001410a460d00200810280b200020023602082000200b4101723602002000200620046a20096a2204360204200220046a41003a00000f0b1003000bcb0101047f416f21070240416f20016b2002490d00200041016a210820002d000041017121092000280208210a0240200141e6ffffff074b0d00410b200220016a220720014101742202200720024b1b2207410f7241016a2007410b491b21070b200a200820091b210820071027210202402004450d0020022008200410041a0b02402003200520046a2209460d00200220046a20066a200820046a20056a200320096b10041a0b02402001410a460d00200810280b20002002360208200020074101723602000f0b1003000b820201067f0240200141704f0d00024020002d0000220220002802002203417e71417f6a2000280204200341017641ff007120034101711b22032001200320014b1b2201410f72220446712002410171452001410a4b22021b0d000240024020020d0041012102200041016a210520002802082106200321070c010b200441016a10272105200028020420002d00002202410176200241017122021b21072000280208200041016a20021b21060b0240200741016a2207450d0020052006200710041a0b02402002450d00200610280b02402001410b490d0020002005360208200020033602042000200441026a3602000f0b200020034101743a00000b0f0b1003000bb20101037f0240024020002802002203417e71417f6a410a20002d00004101711b22042000280204200341017641ff0071200341017122051b22036b2002490d002002450d012000280208200041016a20051b220420036a2001200210041a200320026a21020240024020002d0000410171450d00200020023602040c010b200020024101743a00000b200420026a41003a000020000f0b20002004200220046b20036a2003200341002002200110310b20000bb80101047f2001102621020240024020002802002203417e71417f6a410a20002d00004101711b22042000280204200341017641ff0071200341017122051b22036b2002490d002002450d012000280208200041016a20051b220420036a2001200210041a200320026a21020240024020002d0000410171450d00200020023602040c010b200020024101743a00000b200420026a41003a000020000f0b20002004200220046b20036a2003200341002002200110310b20000ba20101037f0240024002400240024020002d000022024101710d00410a2103410a210420024114460d01200241017621030c020b200028020422032000280200417e71417f6a2204470d020b2000200441012004200441004100103220002d00004101710d010b2000200341017441026a3a0000200041016a21000c010b2000200341016a360204200028020821000b200020036a220041003a0001200020013a00000bf80101037f0240200028020420002d00002204410176200441017122051b22042001490d000240024020002802002206417e71417f6a410a20051b220520046b2003490d002003450d012000280208200041016a20064101711b2105024020042001460d00200520016a220620036a2006200420016b10021a200220034100200520046a20024b1b4100200620024d1b6a21020b200520016a2002200310021a200420036a21030240024020002d0000410171450d00200020033602040c010b200020034101743a00000b200520036a41003a000020000f0b20002005200420036a20056b2004200141002003200210310b20000f0b1003000b0e002000200120022002102610370baa0101057f0240200028020420002d00002203410176200341017122041b22052001490d0002402002450d00200520016b2206200220062002491b21072000280208200041016a20041b21040240200620024d0d00200420016a2202200220076a200620076b10021a20002d000021030b200520076b2102024002402003410171450d00200020023602040c010b200020024101743a00000b200420026a41003a00000b20000f0b1003000b900201047f230041106b220224002001200241056a102c2103200041086a41003602002000420037020002402003200241056a6b220441704f0d00024002402004410a4b0d00200020044101743a0000200041016a21010c010b2004410f72220541016a10272101200020043602042000200541026a360200200020013602080b0240200241056a2003460d0002400240200441077122040d00200241056a21000c010b200241056a21000340200120002d00003a0000200141016a2101200041016a21002004417f6a22040d000b0b200241056a20036b41784b0d00034020012000290000370000200141086a2101200041086a22002003470d000b0b200141003a0000200241106a24000f0b1003000b900201047f230041106b220224002001200241056a102c2103200041086a41003602002000420037020002402003200241056a6b220441704f0d00024002402004410a4b0d00200020044101743a0000200041016a21010c010b2004410f72220541016a10272101200020043602042000200541026a360200200020013602080b0240200241056a2003460d0002400240200441077122040d00200241056a21000c010b200241056a21000340200120002d00003a0000200141016a2101200041016a21002004417f6a22040d000b0b200241056a20036b41784b0d00034020012000290000370000200141086a2101200041086a22002003470d000b0b200141003a0000200241106a24000f0b1003000b040020000b2801017f0240200028020822010d00200020002802002802101101000f0b20002001417f6a3602080b040041000b05001003000b2301017f230041206b2203240020012002200310052000200310411a200341206a24000bbd0301057e200131000f2102200131000e2103200131000d2104200020013100002205423886200542108620013100014208868420013100028442108620013100034208868420013100048442108620013100054208868420013100068422064208862205428080808080e0ffff008384200542808080f8ff1f838420054280feff0783842006421086200131000742088684200131000884421086200131000942088684200131000a84421086200131000b42088684200131000c8442108622054238888437030820002002200320052004420886848442088684370300200131001f2102200131001e2103200131001d2104200041186a20013100102205423886200542108620013100114208868420013100128442108620013100134208868420013100148442108620013100154208868420013100168422064208862205428080808080e0ffff008384200542808080f8ff1f838420054280feff0783842006421086200131001742088684200131001884421086200131001942088684200131001a84421086200131001b42088684200131001c844210862205423888843703002000200220032005200442088684844208868437031020000bed0102017f017e230041206b220324002001200220031006200020033100014208862003310000421086842003310002844228862003310005420886200331000684200331000342188620033100044210868484420886842003310009420886200331000a842003310007421886200331000842108684844220862204423888843703082000200331000d420886200331000e842004200331000b421886200331000c421086848484420886200331000f84370300200041186a200331001142088620033100104210868420033100128442288620033100134220868437030020004200370310200341206a24000b0a0041002000370390590b5101017f230041e0006b220124002001200141d8006a36020c2001200141106a3602082001200141106a360204200141046a200010451a200141106a200128020820012802046b1007200141e0006a24000b9d0801027f02402000280208200028020422026b41074a0d0041004198c2001000200028020421020b20022001410810041a2000200028020441086a2202360204200141086a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a22023602042001410c6a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141106a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141146a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141186a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a22023602042001411c6a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141206a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141246a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141286a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a22023602042001412c6a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141306a21030240200028020820026b41014a0d0041004198c2001000200028020421020b20022003410210041a2000200028020441026a2202360204200141326a21030240200028020820026b41014a0d0041004198c2001000200028020421020b20022003410210041a2000200028020441026a2202360204200141346a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141386a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a22023602042001413c6a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a22023602040240200028020820026b41034a0d0041004198c2001000200028020421020b2002200141c0006a410410041a2000200028020441046a36020420000b7402017f017e230041106b22022400200241046a200110470240024020022802042201200228020820016b100822034200530d0020002003370300410121010c010b41002101200041003a00000b200020013a0008024020022802042200450d0020022000360208200010280b200241106a24000baa0403047f017e027f230041206b2202240041002103200041003602082000420037020020012802042204200128020022056b410675ad21060340200341016a2103200642ff005621072006420788210620070d000b2002200336021402400240024020052004470d0041002107410021050c010b0340200228021441086a2107200541386a2802002208ad21060340200741016a2107200642ff005621032006420788210620030d000b200220073602142002200241146a3602182008417f460d02200841027441c4c2006a28020021072002200241186a360208200241086a200541086a2007110200200541c0006a22052004470d000b2000280200210720002802042105200228021421030b024002402003200520076b22084d0d002000200320086b10a40120002802002107200028020421050c010b200320084f0d002000200720036a22053602040b2002200736020c2002200736020820022007200520076b6a360210200128020420012802006b410675ad2106034020022006a741ff0071200642ff00562203410774723a00180240200228021020076b41004a0d0041004198c20010000b200642078821062007200241186a410110041a2002200228020c41016a220736020c20030d000b02402001280200220720012802042203460d0003402002200241086a360214200220073602182002200741086a36021c200241186a200241146a1048200741c0006a22072003470d000b0b200241206a24000f0b10b101000b930202047f017e230041106b2202240020002802002103024020012802002204280208200428020422056b41074a0d0041004198c2001000200428020421050b20052003410810041a2004200428020441086a360204200028020422053502302106200128020022042802042101034020022006a741ff0071200642ff00562200410774723a000b0240200428020820016b41004a0d0041004198c2001000200428020421010b2006420788210620012002410b6a410110041a2004200428020441016a220136020420000d000b20022004360204024020052802302204417f470d0010b101000b200441027441f4c2006a28020021042002200241046a36020c2002410c6a20052004110200200241106a24000b040010090b930101047f230041106b210102402000bc220241177641ff017122034195014b0d000240200341ff00490d0041ffffff03200341817f6a2203762204200271450d0120012000430000807b9238020c4100200420024100481b20026a418080807c20037571be0f0b20012000430000807b923802080240200241004e0d0043000000800f0b430000803f200020021b21000b20000bfb0e01067f02400240200041d3014b0d004130210141b0c300210203402002200141017622034102746a220441046a2002200428020020004922041b210220012003417f736a200320041b22010d000b200228020021020c010b02402000417c4f0d002000200041d2016e220541d2016c22066b21004130210141f0c400210203402002200141017622034102746a220441046a2002200428020020004922041b210220012003417f736a200320041b22010d000b200241f0c4006b41027521000340200041027441f0c4006a28020020066a210241d87e2101024003402002200141ecc4006a28020022036e22042003490d042002200420036c460d012002200141f0c4006a28020022036e22042003490d042002200420036c460d01200141086a22010d000b41a303210103402002200141b07e6a22036e22042003490d042002200420036c460d012002200141ba7e6a22046e22062003410a6a2203490d042002200620046c460d012002200141bc7e6a22046e2206200341026a2203490d042002200620046c460d012002200141c07e6a22046e2206200341046a2203490d042002200620046c460d012002200141c27e6a22046e2206200341026a2203490d042002200620046c460d012002200141c67e6a22046e2206200341046a2203490d042002200620046c460d012002200141cc7e6a22046e2206200341066a2203490d042002200620046c460d012002200141ce7e6a22046e2206200341026a2203490d042002200620046c460d012002200141d47e6a22046e2206200341066a2203490d042002200620046c460d012002200141d87e6a22046e2206200341046a2203490d042002200620046c460d012002200141da7e6a22046e2206200341026a2203490d042002200620046c460d012002200141de7e6a22046e2206200341046a2203490d042002200620046c460d012002200141e47e6a22046e2206200341066a2203490d042002200620046c460d012002200141ea7e6a22046e2206200341066a2203490d042002200620046c460d012002200141ec7e6a22046e2206200341026a2203490d042002200620046c460d012002200141f27e6a22046e2206200341066a2203490d042002200620046c460d012002200141f67e6a22046e2206200341046a2203490d042002200620046c460d012002200141f87e6a22046e2206200341026a2203490d042002200620046c460d012002200141fe7e6a22046e2206200341066a2203490d042002200620046c460d012002200141827f6a22046e2206200341046a2203490d042002200620046c460d012002200141887f6a22046e2206200341066a2203490d042002200620046c460d012002200141907f6a22046e2206200341086a2203490d042002200620046c460d012002200141947f6a22046e2206200341046a2203490d042002200620046c460d012002200141967f6a22046e2206200341026a2203490d042002200620046c460d0120022001419a7f6a22046e2206200341046a2203490d042002200620046c460d0120022001419c7f6a22046e2206200341026a2203490d042002200620046c460d012002200141a07f6a22046e2206200341046a2203490d042002200620046c460d012002200141a87f6a22046e2206200341086a2203490d042002200620046c460d012002200141ae7f6a22046e2206200341066a2203490d042002200620046c460d012002200141b27f6a22046e2206200341046a2203490d042002200620046c460d012002200141b87f6a22046e2206200341066a2203490d042002200620046c460d012002200141ba7f6a22046e2206200341026a2203490d042002200620046c460d012002200141be7f6a22046e2206200341046a2203490d042002200620046c460d012002200141446a22046e2206200341066a2203490d042002200620046c460d012002200141466a22046e2206200341026a2203490d042002200620046c460d0120022001414c6a22046e2206200341066a2203490d042002200620046c460d012002200141526a22046e2206200341066a2203490d042002200620046c460d012002200141566a22046e2206200341046a2203490d042002200620046c460d012002200141586a22046e2206200341026a2203490d042002200620046c460d0120022001415c6a22046e2206200341046a2203490d042002200620046c460d012002200141626a22046e2206200341066a2203490d042002200620046c460d012002200141646a22046e2206200341026a2203490d042002200620046c460d0120022001416a6a22046e2206200341066a2203490d042002200620046c460d0120022001416e6a22046e2206200341046a2203490d042002200620046c460d012002200141706a22046e2206200341026a2203490d042002200620046c460d012002200141746a22046e2206200341046a2203490d042002200620046c460d012002200141766a22046e2206200341026a2203490d042002200620046c460d01200220016e22042003410a6a490d04200420016c2103200141d2016a210120022003470d000b0b4100200041016a2202200241304622021b2100200520026a220541d2016c21060c000b0b1003000b20020bc20801097f230041206b220424000240024002400240200128020422050d0020004200370200200041086a41003602000c010b02402002450d00200441186a410036020020044200370310200541704f0d0220012802002102024002402005410b490d002005410f72220641016a10272101200420053602142004200641026a360210200420013602180c010b200420054101743a0010200441106a41017221010b20012002200510041a200120056a41003a000020042802182207200441106a410172220820042d0010220141017122021b2206200428021422092001410176220a20021b220b6a210c2006210102400240200b450d00200b210520062101034020012d0000410a460d01200141016a21012005417f6a22050d000b200c21010c010b2001200c460d00200141016a2205200c460d002006200b6a220220016b417e6a210b024020022001417f736a4103712202450d000340024020052d00002206410a460d00200120063a0000200141016a21010b200541016a21052002417f6a22020d000b0b0240200b4103490d000340024020052d00002202410a460d00200120023a0000200141016a21010b024020052d00012202410a460d00200120023a0000200141016a21010b024020052d00022202410a460d00200120023a0000200141016a21010b024020052d00032202410a460d00200120023a0000200141016a21010b200541046a2205200c470d000b0b20042d00102205410176210a2005410171210220042802142109200428021821070b200441106a20012007200820021b22056b20052009200a20021b6a20016b10391a2004200428021420042d00102201410176200141017122011b36020c20042004280218200820011b360208200420042902083703002000200441002003104c20042d0010410171450d01200428021810280c010b20004200370200200041086a41003602002000200541027641036c10332001280200210b410021010340200141016a20054f0d03024020034108742206200b20016a220241016a2d00007241b0c6006a2d0000220c41c000470d0041004199c00010000b0240200620022d00007241b0c6006a2d0000220841c000470d0041004199c00010000b20002008411a74200c4114744180808018717241187510360240200141026a20054f0d000240200241026a2d0000220841526a0e1001000000000000000000000000000001000b0240200620087241b0c6006a2d0000220841c000470d0041004199c00010000b2000200c411c74200841167441808080f80071724118751036200141036a20054f0d000240200241036a2d0000220241526a0e1001000000000000000000000000000001000b2008410674210c0240200620027241b0c6006a2d0000220241c000470d0041004199c00010000b20002002200c6a41187441187510360b200141046a22012005490d000b0b200441206a24000f0b200441106a102e000b410041b0ca0010001003000b2e00024041002d00a4594101710d00410041013a00a4594198d90041bac000104e1a410d41004180c00010251a0b0b8c0101037f20004200370200200041086a4100360200024020011026220241704f0d000240024002402002410b490d002002410f72220341016a10272104200020023602042000200341026a360200200020043602080c010b200020024101743a0000200041016a21042002450d010b20042001200210041a0b200420026a41003a000020000f0b2000102e000b1900024041002d009859410171450d0041002802a05910280b0b2e00024041002d00b4594101710d00410041013a00b45941a8d90041caca00104e1a410e41004180c00010251a0b0b1900024041002d00a859410171450d0041002802b05910280b0b2e00024041002d00c4594101710d00410041013a00c45941b8d90041d3ca00104e1a410f41004180c00010251a0b0b1900024041002d00b859410171450d0041002802c05910280b0b2e00024041002d00d4594101710d00410041013a00d45941c8d90041ffca00104e1a411041004180c00010251a0b0b1900024041002d00c859410171450d0041002802d05910280b0b7b01027f230041e0006b22002400024041002d00e4594101710d00410041013a00e459200041abcb0041e00010042101410042003702d859410041003602e05941d8d90041e000105741002802dc59200141e00010041a410041002802dc5941e0006a3602dc59411141004180c00010251a0b200041e0006a24000b2f01017f02402001417f4a0d002000103f000b2000200110272202360200200020023602042000200220016a3602080b1e01017f024041002802d8592201450d00410020013602dc59200110280b0b6e01027f024041002d00f4594101710d00410041013a00f459410041c004102722003602e8594100200041c0046a3602f059410021010340200020016a41003a0000200141016a220141c004470d000b200041013a00004100200020016a3602ec59411241004180c00010251a0b0b1e01017f024041002802e8592201450d00410020013602ec59200110280b0bae0102017f017e23004180016b2203240020002903002104200341e0006a20022802002200200228020420006b1040200342003703582003200437035020032001370348200341186a2003290368370300200341206a200341f0006a290300370300200341286a200341e0006a41186a2903003703002003200137030020032003290360370310200310493703302003100a360238200341d0006a2001200341c8006a2003105c20034180016a24000b4f01017f23004190026b220424002004410036028c022004410c6a20022903001096010240200020012004410c6a200428028c0220034100109701450d0041004194d00010000b20044190026a24000bbb1407027f017e0e7f017e027f027d067f23004190036b220224002000290300100b02402001410c6a2802002200200128020822036b41306d41818004490d004100418bcc00100020012802082103200128020c21000b024020002003470d00410041bccc00100020012802082103200128020c21000b20024188036a4100360200420021042002420037038003200220012903003703f802200241f8026a41086a2205200020036b41306d105e200241ec026a41dbcc00104e2106200241e0026a41e3cc00104e2107200241808080fc033602dc02200242003702d402200242003702cc02024020012802082208200128020c2209460d00200241cc026a41086a210a200741016a210b200641016a210c2002412c6a410172210d2002412c6a410172210e420021040340024020082d0000410171450d002008280204418102490d00410041ebcc0010000b2002412c6a200841186a22004100200628020420062d0000220341017620034101711b20001030210f0240024020022802302210200f2d000022114101762212201141017122031b200628020420062d00002200410176200041017122001b470d002006280208200c20001b2100024020030d00200e210320114102490d02034020032d000020002d0000470d02200041016a2100200341016a21032012417f6a22120d000c030b0b2010450d01200228023420002010102a450d010b4100419fcd0010000b0240200f2d0000410171450d00200228023410280b2002412c6a200841246a22004100200728020420072d0000220341017620034101711b20001030210f0240024020022802302210200f2d000022114101762212201141017122031b200728020420072d00002200410176200041017122001b470d002007280208200b20001b2100024020030d00200d210320114102490d02034020032d000020002d0000470d02200041016a2100200341016a21032012417f6a22120d000c030b0b2010450d01200228023420002010102a450d010b410041c4cd0010000b0240200f2d0000410171450d00200228023410280b0240200829031022132004427f85580d00410041fccd001000200829031021130b200241ec016a200841206a280200200841196a20082d0018220041017122031b2008411c6a280200200041017620031b105f2002410036022c2002412c6a200241ec016a410410041a200228022c211002400240024020022802d0022212450d000240024020126941014b22110d002012417f6a201071210f0c010b2010210f20102012490d002010201270210f0b20022802cc02200f4102746a2802002200450d002012417f6a2114034020002802002200450d010240200028020422032010460d000240024020110d00200320147121030c010b20032012490d00200320127021030b2003200f470d020b200041086a200241ec016a41e000102a0d000b410041a4ce0010000c010b41e8001027221541086a200241ec016a41e00010041a201541003602002015201036020420022a02dc02211620022802d80241016ab32117024002402012450d0020162012b39420175d450d010b2012410174201241034920122012417f6a7141004772722100024002402017201695104a2217430000804f5d201743000000006071450d002017a921030c010b410021030b41022118024020002003200020034b1b22004101460d00024020002000417f6a710d00200021180c010b2000104b21180b024002400240201820022802d00222004b0d00201820004f0d02200041034921120240024020022802d802b320022a02dc0295104a2217430000804f5d201743000000006071450d002017a921030c010b410021030b0240024020120d0020006941014b0d002003410141202003417f6a676b7420034102491b21030c010b2003104b21030b20182003201820034b1b221820004f0d022018450d010b20184180808080044f0d0420184102741027210320022802cc022100200220033602cc0202402000450d00200010280b200220183602d0024100210020182103034020022802cc0220006a4100360200200041046a21002003417f6a22030d000b20022802d4022214450d01201428020421190240024020186941014b221a0d0020192018417f6a7121190c010b20192018490d00201920187021190b20022802cc0220194102746a200a3602002014280200220f450d012018417f6a211b0340200f280204210002400240201a0d002000201b7121000c010b20002018490d00200020187021000b0240024020002019470d00200f21140c010b02400240024020022802cc022000410274221c6a2203280200450d004100211d200f28020022120d01200f21030c020b20032014360200200f2114200021190c020b200f41086a2111200f210303402011201241086a41e000102a21122003280200210002402012450d002000211d0c020b20002103200028020022120d000b200021030b2014201d360200200320022802cc02201c6a28020028020036020020022802cc02201c6a280200200f3602000b2014280200220f0d000c020b0b20022802cc022100200241003602cc0202402000450d00200010280b200241003602d0020b024020022802d00222122012417f6a2200710d002000201071210f0c010b0240201020124f0d002010210f0c010b2010201270210f0b02400240024020022802cc02200f4102746a220328020022000d00201520022802d402360200200220153602d4022003200a36020020152802002200450d02200028020421000240024020122012417f6a2203710d00200020037121000c010b20002012490d00200020127021000b20022802cc0220004102746a21000c010b201520002802003602000b200020153602000b200220022802d80241016a3602d8020b2002412c6a2008412c6a280200200841256a20082d0024220041017122031b200841286a280200200041017620031b10600240200241ec016a2002412c6a10610d00410041b9ce0010000b41e00010272200200241ec016a41e00010041a20022008102f21032002200041e0006a22123602202002201236021c20022000360218200220082903103703102005200310621a024020022802182200450d002002200036021c200010280b024020032d0000410171450d00200228020810280b201320047c2104200841306a22082009470d010c020b0b1003000b02400240200420012903002213540d0020132004420188560d010b410041d4ce0010000b024020022802800322002002280284032203460d00034002402000411c6a280200200041186a2802006b41e000460d00410041a4d40010000b200041286a22002003470d000b0b2002412c6a200241f8026a10634200200228022c2200200228023020006b100c0240200228022c2200450d0020022000360230200010280b024020022802d4022200450d00034020002802002103200010282003210020030d000b0b20022802cc022100200241003602cc0202402000450d00200010280b024020072d0000410171450d00200728020810280b024020062d0000410171450d00200628020810280b200510641a20024190036a24000b5001027f230041206b2202240002402000280208200028020022036b41286d20014f0d0020002002410c6a2001200028020420036b41286d200041086a106522011066200110671a0b200241206a24000b990902047f027e230041a0016b220324000240410028029c59220441002d00985922054101762206200541017122051b2002490d00410041edd000100041002d0098592205410176210620054101712105410028029c5921040b0240200141002802a0594199d90020051b2004200620051b102a450d004100418dd10010000b20032002410028029c5941002d009859220541017620054101711b22056b3602142003200120056a3602102003200329021037030820034194016a200341086a41014101104c200341dc006a20032802980120032d009401220541017620054101711b2201103b200341e8006a41086a200341dc006a410041c6d1001038220241086a28020036020020032002290200370368410021050340200220056a4100360200200541046a2205410c470d000b200341f8006a41086a200341e8006a41d4d1001035220241086a28020036020020032002290200370378410021050340200220056a4100360200200541046a2205410c470d000b200341d0006a41e000103b20034188016a41086a200341f8006a2003280258200341d0006a41017220032d0050220541017122021b2003280254200541017620021b1034220241086a2802003602002003200229020037038801410021050340200220056a4100360200200541046a2205410c470d000b200341306a41086a20034188016a41f3d1001035220241086a28020036020020032002290200370330410021050340200220056a4100360200200541046a2205410c470d000b200341c4006a4104103a200341106a41086a200341306a200328024c200341c4006a41017220032d0044220541017122021b2003280248200541017620021b1034220241086a28020036020020032002290200370310410021050340200220056a4100360200200541046a2205410c470d000b0240200141e400460d0041002003280218200341106a41017220032d0010220541017122021b2003280214200541017620021b10160b024020032d0010410171450d00200328021810280b024020032d0044410171450d00200328024c10280b024020032d0030410171450d00200328023810280b024020032d008801410171450d0020032802900110280b024020032d0050410171450d00200328025810280b024020032d0078410171450d0020032802800110280b024020032d0068410171450d00200328027010280b024020032d005c410171450d00200328026410280b0240200328029c0120034194016a41017220032d009401220241017122011b2205200328029801200241017620011b6a417c6a22042005460d0020002005200420056b10021a0b200341106a200041e0001042200341306a2102200341106a21014102210003404200200141086a2903002207200041014622051b21082007422088200129030020051b21074103410f20051b21050340200220056a20073c000020074208882008423886842107200842088821082005417f6a2205417f470d000b200141106a2101200241106a21022000417f6a22000d000b02402004200341306a4104102a450d0041004180d20010000b024020032d009401410171450d00200328029c0110280b200341a0016a24000b990902047f027e230041a0016b22032400024041002802ac59220441002d00a85922054101762206200541017122051b2002490d00410041edd000100041002d00a859220541017621062005410171210541002802ac5921040b0240200141002802b05941a9d90020051b2004200620051b102a450d004100418dd10010000b2003200241002802ac5941002d00a859220541017620054101711b22056b3602142003200120056a3602102003200329021037030820034194016a200341086a41014101104c200341dc006a20032802980120032d009401220541017620054101711b2201103b200341e8006a41086a200341dc006a410041c6d1001038220241086a28020036020020032002290200370368410021050340200220056a4100360200200541046a2205410c470d000b200341f8006a41086a200341e8006a41d4d1001035220241086a28020036020020032002290200370378410021050340200220056a4100360200200541046a2205410c470d000b200341d0006a41c001103b20034188016a41086a200341f8006a2003280258200341d0006a41017220032d0050220541017122021b2003280254200541017620021b1034220241086a2802003602002003200229020037038801410021050340200220056a4100360200200541046a2205410c470d000b200341306a41086a20034188016a41f3d1001035220241086a28020036020020032002290200370330410021050340200220056a4100360200200541046a2205410c470d000b200341c4006a4104103a200341106a41086a200341306a200328024c200341c4006a41017220032d0044220541017122021b2003280248200541017620021b1034220241086a28020036020020032002290200370310410021050340200220056a4100360200200541046a2205410c470d000b0240200141c401460d0041002003280218200341106a41017220032d0010220541017122021b2003280214200541017620021b10160b024020032d0010410171450d00200328021810280b024020032d0044410171450d00200328024c10280b024020032d0030410171450d00200328023810280b024020032d008801410171450d0020032802900110280b024020032d0050410171450d00200328025810280b024020032d0078410171450d0020032802800110280b024020032d0068410171450d00200328027010280b024020032d005c410171450d00200328026410280b0240200328029c0120034194016a41017220032d009401220241017122011b2205200328029801200241017620011b6a417c6a22042005460d0020002005200420056b10021a0b200341106a200041c0011042200341306a2102200341106a21014102210003404200200141086a2903002207200041014622051b21082007422088200129030020051b21074103410f20051b21050340200220056a20073c000020074208882008423886842107200842088821082005417f6a2205417f470d000b200141106a2101200241106a21022000417f6a22000d000b02402004200341306a4104102a450d0041004180d20010000b024020032d009401410171450d00200328029c0110280b200341a0016a24000beb0101037f23004190096b2202240041002103200241d0076a410041c00110011a200241d0046a410041800310011a200241d0076a41002802d859220441002802dc5920046b10041a200241d0046a200141c00110041a200241d0076a41e0006a200041e00010041a200241e0003602cc04200220003602c804200220022902c804370300200241c8d900200241d0046a41c0016a1068200241086a410041c00410011a0240200241d0076a41c001200241d0046a4180034102200241086a41c004100d0d00200241086a41002802e859220041002802ec5920006b102a4521030b20024190096a240020030bcf0101067f230041206b22022400200041086a210302400240024020002802042204200028020822054f0d0020032004200110692000200028020441286a22033602040c010b2004200028020022066b41286d220741016a220441e7cc99334f0d0120032002410c6a200520066b41286d220541017422062004200620044b1b41e6cc9933200541b3e6cc19491b2007200310652204280208200110692004200428020841286a360208200020041066200410671a200028020421030b200241206a2400200341586a0f0b2000103f000b6f01027f230041106b22022400200041003602082000420037020020024108360204200241046a200141086a220310a2011a20002002280204107d2002200028020436020c20022000280200220036020820022000360204200241046a2001109a01200310a3011a200241106a24000b5501037f024020002802002201450d00200121020240200028020422032001460d00200041086a210203402002200341586a220310ac0120032001470d000b200028020021020b20002001360204200210280b20000b6701017f410021042000410036020c200041106a2003360200024002402001450d00200141e7cc99334f0d01200141286c102721040b2000200436020020002004200241286c6a220336020820002004200141286c6a36020c2000200336020420000f0b1003000b9e0101047f2001280204210202402000280204220320002802002204460d00200041086a210503402005200241586a200341586a220310692001200128020441586a220236020420032004470d000b200028020021040b2000200236020020012004360204200028020421032000200128020836020420012003360208200028020821032000200128020c3602082001200336020c200120012802043602000b1c01017f200010d401024020002802002201450d00200110280b20000be10301027f230041a0066b22032400200341a0046a418002200028020020002802042001280208200141016a20012d0000220041017122041b2001280204200041017620041b109d01410021010340200341c0016a20016a200341a0046a2001413f736a2d00003a0000200141016a220141c000470d000b200341e0036a200341c0016a41c00010041a200341e0036a41c00020034180036a413010181a200341a0046a41c0006a2100410021010340200341c0016a20016a20002001413f736a2d00003a0000200141016a220141c000470d000b200341e0036a200341c0016a41c00010041a200341e0036a41c00020034180036a41306a2204413010181a20034180036a41e000200341c0016a41c00110191a200341a0056a2100410021010340200320016a20002001413f736a2d00003a0000200141016a220141c000470d000b200341e0036a200341c00010041a200341e0036a41c00020034180036a413010181a200341e0056a2100410021010340200320016a20002001413f736a2d00003a0000200141016a220141c000470d000b200341e0036a200341c00010041a200341e0036a41c0002004413010181a20034180036a41e000200341c00110191a200341c0016a41c001200341c001200241c001101a1a200341a0066a24000b8f0101017f20012002290300370300200141086a200241086a280200360200410021030340200220036a4100360200200341046a2203410c470d000b200141003602182001411c6a220342003702002001200228021836021820032002411c6a280200360200200141206a200241206a22032802003602002001200229031037031020034100360200200242003703180b5001017f230041106b220224002000290300100b200241046a2001106b420120022802042200200228020820006b10101a024020022802042200450d0020022000360208200010280b200241106a24000b6501017f230041106b22022400200041003602082000420037020020024100360204200241046a200110ad011a20002002280204107d2002200028020436020c20022000280200220036020820022000360204200241046a200110ae011a200241106a24000b970102047f027e230041206b220224002000290300100b2002210341022104200121050340200541086a290300210620052903002107410f21000340200320006a20073c000020074208882006423886842107200642088821062000417f6a2200417f470d000b200541106a2105200341106a21032004417f6a22040d000b2002101141d5cf001012200141f0cf00106d200241206a24000b860103037f027e017f230041206b2202240020022103410221040340200041086a290300210520002903002106410f21070340200320076a20063c000020064208882005423886842106200542088821052007417f6a2207417f470d000b200041106a2100200341106a21032004417f6a22040d000b20024120101c20011012200241206a24000b8d0103037f027e017f230041206b2202240020022103410221040340200141086a290300210520012903002106410f21070340200320076a20063c000020064208882005423886842106200542088821052007417f6a2207417f470d000b200141106a2101200341106a21032004417f6a22040d000b0240200210130d00410041f2cf0010000b200241206a24000ba70101037f230041206b220221032002240002400240101422040d00410021020c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a0b20032002360218200320023602142003200220046a36021c20034200370308200341146a200341086a10701a20034200370300200341146a200310701a02402004418004490d002002450d00200210230b200341206a24000b4001017f02402000280208200028020422026b41074b0d00410041c0d4001000200028020421020b20012002410810041a2000200028020441086a36020420000b5701037f230022022103024010142204450d000240200441ff034b0d0020022004410f6a4170716b220224002002200410151a0c010b200410212202200410151a2004418004490d002002450d00200210230b200324000b5701037f230022022103024010142204450d000240200441ff034b0d0020022004410f6a4170716b220224002002200410151a0c010b200410212202200410151a2004418004490d002002450d00200210230b200324000b5701037f230022022103024010142204450d000240200441ff034b0d0020022004410f6a4170716b220224002002200410151a0c010b200410212202200410151a2004418004490d002002450d00200210230b200324000b5701037f230022022103024010142204450d000240200441ff034b0d0020022004410f6a4170716b220224002002200410151a0c010b200410212202200410151a2004418004490d002002450d00200210230b200324000bef0101047f230041c0006b220221032002240002400240101422040d00410021020c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a0b2003413c6a2205200220046a360200200320023602382003200236023420034200370328200341346a200341286a10701a200341346a200341276a10761a200341346a200341266a10761a200341186a20052802003602002003200329023437031020032001370308200320003703002003200329032820032d002720032d0026107702402004418004490d002002450d00200210230b200341c0006a24000b3d01017f0240200028020820002802042202470d00410041c0d4001000200028020421020b20012002410110041a2000200028020441016a36020420000b6602017f017e230041e0006b220424002000290300210520044200370358200420053703502004200137034820042001370300200441106a200141001078200410493703302004100a360238200441d0006a2001200441c8006a20041079200441e0006a24000b810201047f230041106b2203210420032400024020020d00200341406a2202220324000b200341406a22032400024020014100200341c000101b220541c100490d002001410020051021220341c000101b1a0b200441003602002004200341c0006a220636020c2004200336020820042003360204200441046a2004107c1a02402004280200450d00410041ead40010000b2004200636020c2004200336020820042003360204200441046a200210c5011a0240200541c100490d00200310230b20002002290310370300200041186a200241286a290300370300200041106a200241206a290300370300200041086a200241186a290300370300200441106a24000b4f01017f23004190026b220424002004410036028c022004410c6a20022903001096010240200020012004410c6a200428028c022003410010c601450d0041004194d00010000b20044190026a24000b9d0201047f230041d0006b220221032002240041002104024010142205450d00024002402005418004490d002005102121040c010b20022005410f6a4170716b220424000b2004200510151a0b20032004360248200320043602442003200420056a36024c20034200370338200341c4006a200341386a10701a200341003602342003420037022c200341c4006a2003412c6a107b1a0240200328024c2003280248460d00410041a6d500412e10160b200341206a200341cc006a280200360200200320032902443703182003200137031020032000370308200341086a20032903382003412c6a105b0240200328022c2202450d0020032002360230200210280b02402005418004490d002004450d00200410230b200341d0006a24000b7701037f230041106b220224002002410036020c20002002410c6a107c1a2001200228020c107d02402000280208200028020422036b2001280204200128020022046b22014f0d00410041c0d4001000200028020421030b20042003200110041a2000200028020420016a360204200241106a240020000b7401047f2000280204210241002103410021040340024020022000280208490d00410041a2d5001000200028020421020b20022c000021052000200241016a2202360204200541ff0071200441ff01712204742003722103200441076a21042002210220054100480d000b2001200336020020000b3a01027f024020012000280204200028020022026b22034d0d002000200120036b10a4010f0b0240200120034f0d002000200220016a3602040b0bdc0103037f017e017f230041206b220221032002240002400240101422040d00410021020c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a0b20032002360218200320023602142003200220046a36021c20034200370308200341146a200341086a10701a200341146a200341076a10761a0240200328021c2003280218460d00410041a6d500412e10160b2003290308210520032d000721062000100b20052006410047100e02402004418004490d002002450d00200210230b200341206a24000b830202037f047e230041306b220221032002240002400240101422040d00410021020c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a0b20032002360228200320023602242003200220046a36022c20034200370318200341246a200341186a10701a200341246a200341106a1080011a200341246a200341086a1080011a200341246a20031080011a0240200328022c2003280228460d00410041a6d500412e10160b200329030021052003290308210620032903102107200329031821082000100b2008200720062005100f02402004418004490d002002450d00200210230b200341306a24000b4001017f02402000280208200028020422026b41074b0d00410041c0d4001000200028020421020b20012002410810041a2000200028020441086a36020420000bf30101047f230041c0006b220221032002240041002104024010142205450d00024002402005418004490d002005102121040c010b20022005410f6a4170716b220424000b2004200510151a0b20032004360238200320043602342003200420056a36023c2003410036023020034200370228200341346a200341286a1082011a0240200328023c2003280238460d00410041a6d500412e10160b200341206a2003413c6a280200360200200320032902343703182003200137031020032000370308200341086a200341286a106a200341286a1083011a02402005418004490d002004450d00200410230b200341c0006a24000b7601027f230041106b220224002002410036020020002002107c1a2001200228020010840102402001280200220320012802042201460d00034020022000360204200220033602082002200341086a36020c200241086a200241046a108501200341206a22032001470d000b0b200241106a240020000b1b0002402000280200450d00200010d501200028020010280b20000b8c0101037f0240200120002802042202200028020022036b41057522044d0d002000200120046b10df010f0b0240200120044f0d0002402002200320014105746a2203460d002002416c6a2101034002402001410c6a2204280200417f460d00200110d6011a0b2004417f360200200141746a2104200141606a210120042003470d000b0b200020033602040b0b4c01017f230041106b220224002001280200200028020010701a20002802042100200128020021012002410036020c20012002410c6a107c1a20012000200228020c10e501200241106a24000bcd0101047f230041306b220221032002240041002104024010142205450d00024002402005418004490d002005102121040c010b20022005410f6a4170716b220424000b2004200510151a0b20032004360218200320043602142003200420056a36021c2003410036021020034200370208200341146a200341086a1087011a0240200328021c2003280218460d00410041a6d500412e10160b2000100b200341206a200341086a1046200341086a1088011a02402005418004490d002004450d00200410230b200341306a24000b7701027f230041106b220224002002410036020020002002107c1a2001200228020010890102402001280200220320012802042201460d00034020022000360204200220033602082002200341086a36020c200241086a200241046a108a01200341c0006a22032001470d000b0b200241106a240020000b1b0002402000280200450d002000108002200028020010280b20000bb00101047f230041106b2202240002400240200120002802042203200028020022046b41067522054d0d002000200120056b1081020c010b200120054f0d0002402003200420014106746a2204460d00200341486a210103400240200141306a22052802002203417f460d002002410f6a2001200341027441d8d5006a2802001102000b2005417f360200200141786a2105200141406a210120052004470d000b0b200020043602040b200241106a24000b4c01017f230041106b220224002001280200200028020010701a20002802042100200128020021012002410036020c20012002410c6a107c1a20012000200228020c10f501200241106a24000b8b0201047f230041d0006b220221032002240041002104024010142205450d00024002402005418004490d002005102121040c010b20022005410f6a4170716b220424000b2004200510151a0b20032004360248200320043602442003200420056a36024c200341386a41003602002003420037033020034200370328200341c4006a200341286a1070200341286a41086a2202108c011a0240200328024c2003280248460d00410041a6d500412e10160b200341206a200341c4006a41086a280200360200200320032902443703182003200137031020032000370308200341086a200341286a105d2002108d011a02402005418004490d002004450d00200410230b200341d0006a24000b5c01027f230041106b220224002002410036020c20002002410c6a107c1a2001200228020c10c90102402001280200220320012802042201460d0003402000200310ca011a200341306a22032001470d000b0b200241106a240020000b5501037f024020002802002201450d00200121020240200028020422032001460d00200041086a210203402002200341506a220310cc0120032001470d000b200028020021020b20002001360204200210280b20000bb80101037f230041e0006b220221032002240002400240101422040d00410021020c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a0b20032002360258200320023602542003200220046a36025c200341d4006a200341086a108f011a0240200328025c2003280258460d00410041a6d500412e10160b2000100b200341086a104402402004418004490d002002450d00200210230b200341e0006a24000b890100200020011070200141086a1090012001410c6a109001200141106a109001200141146a109001200141186a1090012001411c6a109001200141206a109001200141246a109001200141286a1090012001412c6a109001200141306a109101200141326a109101200141346a109001200141386a1090012001413c6a109001200141c0006a1090010b4001017f02402000280208200028020422026b41034b0d00410041c0d4001000200028020421020b20012002410410041a2000200028020441046a36020420000b4001017f02402000280208200028020422026b41014b0d00410041c0d4001000200028020421020b20012002410210041a2000200028020441026a36020420000bb70101037f230041206b220221032002240002400240101422040d00410021020c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a0b20032002360218200320023602142003200220046a36021c20034200370308200341146a200341086a10701a0240200328021c2003280218460d00410041a6d500412e10160b2003290308100b02402004418004490d002002450d00200210230b200341206a24000bb80201057f230041c0006b2202210320022400024002400240101422040d00200341186a4200370300200341106a4200370300200342003703082003420037030041002102200421050c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a200341186a4200370300200341106a42003703002003420037030820034200370300200220046a21052004411f4b0d010b410041c0d40010000b200341206a2002412010041a200341206a200341206a41206a2003109401200241206a2106024020044120460d00410041a6d500412e10160b200341386a2005360200200341346a2006360200200320023602302003200137032820032000370320200341206a2003106c02402004418004490d002002450d00200210230b200341c0006a24000be20104017f017e017f027e230041106b22032400024020002001460d0042002104411021054200210603400240024020054102490d00200642088620044238888421062005417f6a2105200420003100008442088621040c010b024020054101460d00410041bad60010000b20003100002107200220063703082002200420078437030041102105200241106a210242002104420021060b200041016a22002001470d000b20054110460d00200320042006200541037441786a4100200541014b1b102b2002200341086a290300370308200220032903003703000b200341106a24000bfa0101037f230041c0006b2202210320022400024002400240101422040d00200341186a4200370300200341106a42003703002003420037030820034200370300410021020c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a200341186a4200370300200341106a420037030020034200370308200342003703002004411f4b0d010b410041c0d40010000b200341206a2002412010041a200341206a200341206a41206a2003109401024020044120460d00410041a6d500412e10160b20032003106e02402004418004490d002002450d00200210230b200341c0006a24000b6201027f0240200028028002220241086a418102490d00410041a5d000100020002802800221020b200020026a2103410721020340200320026a20013c0000200142088821012002417f6a2202417f470d000b200020002802800241086a360280020b5001017f23004190026b22062400200641046a200410980141a68203200120022003200628028802200628028c0220051017210402402006280284022205450d00200510290b20064190026a240020040ba10203057f027e017f230041206b220224002002210341022104200141106a220521060340200641086a290300210720062903002108410f21090340200320096a20083c000020084208882007423886842108200742088821072009417f6a2209417f470d000b200641106a2106200341106a21032004417f6a22040d000b20022103410221060340200541086a290300210720052903002108410f21090340200320096a20083c000020084208882007423886842108200742088821072009417f6a2209417f470d000b200541106a2105200341106a21032006417f6a22060d000b2000413436028802200041003602800220002000360284022002200041346a3602082002200036020420022000360200200220011099011a200241206a24000bda0102057f027e230041206b22022400200141106a210320002001109a01210420022105410221060340200341086a290300210720032903002108410f21000340200520006a20083c000020084208882007423886842108200742088821072000417f6a2200417f470d000b200341106a2103200541106a21052006417f6a22060d000b02402004280208200428020422006b411f4a0d00410041c2d0001000200428020421000b20002002412010041a2004200428020441206a3602042004200141306a109b01200141386a109c012100200241206a240020000b4001017f02402000280208200028020422026b41074a0d00410041c2d0001000200028020421020b20022001410810041a2000200028020441086a36020420000b4001017f02402000280208200028020422026b41074a0d00410041c2d0001000200028020421020b20022001410810041a2000200028020441086a36020420000b4001017f02402000280208200028020422026b41034a0d00410041c2d0001000200028020421020b20022001410410041a2000200028020441046a36020420000bb00401047f23004180036b220624000240200141e03f4b0d00200541ff014a0d00200641c0026a410041c00010011a200620053a00bf02200641003a00be02200620013a00bd02200620014108763a00bc0220064188026a42abb38ffc91a3b3f0db0037030020064180026a42ffa4b988c591da829b7f370300200641f8016a42f2e6bbe3a3a7fda7a57f370300200642e7cca7d0d6d0ebb3bb7f3703f001200642003703e801200641003602e001200641a0016a200641c0026a41c000109e01200641a0016a20022003109e01200641a0016a200641bc026a4103109e01200641a0016a20042005109e01200641a0016a200641bc026a41036a22074101109e01200641a0016a20064190026a109f01200641f0006a4100412110011a2001411f6a22034120490d0020034105762108200041606a2109410121000340410021030340200641f0006a20036a220220022d000020064190026a20036a2d0000733a0000200341016a22034120470d000b200620003a009001200642abb38ffc91a3b3f0db00370368200642ffa4b988c591da829b7f370360200642f2e6bbe3a3a7fda7a57f370358200642e7cca7d0d6d0ebb3bb7f37035020064200370348200641003602402006200641f0006a4121109e01200620042005109e01200620074101109e012006200641f0006a109f012009200041057422036a200641f0006a200120036b2203411f7520037141206a10041a20002008462103200041016a21002003450d000b0b20064180036a24000b6f01027f02402002450d0020002802402103034020012d000021042000200341016a360240200020036a20043a000002402000280240220341c000470d00200010a0014100210320004100360240200020002903484280047c3703480b200141016a21012002417f6a22020d000b0b0b5b01037f200010a101200041d0006a2102410021030340411820034103746b2104410021000340200120006a200220006a2802002004763a0000200041046a22004120470d000b200141016a2101200341016a22034104470d000b0bbe04010c7f230041a0026b2201240041002102410021030340200141206a20026a2000200341ff017122046a280000220341187420034180fe03714108747220034108764180fe037120034118767272360200200441046a2103200241046a220241c000470d000b41002102200128022021050340200141206a20026a220341c0006a200341386a2802002204410f772004410d77732004410a7673200341246a2802006a20056a200341046a28020022034119772003410e77732003410376736a36020020032105200241046a220241c001470d000b200041d0006a2102410021030340200120036a200220036a280200360200200341046a22034120470d000b41002104200128020c2106200128021c210720012802182105200128021421032001280210210820012802082109200128020421022001280200210a03402005210b200321052009220c2002220972200a220271200c200971722002411e772002411377732002410a77736a200b20082203417f7371200520037172200141206a20046a2802006a2003411a772003411577732003410777736a200441a4d2006a2802006a20076a22086a210a200820066a2108200b2107200c2106200441046a2204418002470d000b2001200b36021c20012005360218200120033602142001200836021020012009360208200120023602042001200a3602002001200c36020c200041d0006a2104410021030340200420036a22022002280200200120036a2802006a360200200341046a22034120470d000b200141a0026a24000bea0102027f027e2000200028024022016a22024180013a000002402001ad220342017c423842c00020014138491b22045a0d00200241016a21012003427f8520047c21030340200141003a0000200141016a21012003427f7c22034200520d000b0b0240200028024022014138490d00200010a00120004100413810011a200028024021010b200020002903482001410374ad7c22033c003f20002003370348200020034208883c003e200020034210883c003d200020034218883c003c200020034220883c003b200020034228883c003a200020034230883c0039200020034238883c0038200010a0010b6b03027f017e017f20012802042202200128020022036b41286dad2104200028020021010340200141016a2101200442ff005621052004420788210420050d000b20002001360200024020032002460d0003402000200310a6011a200341286a22032002470d000b0b20000b5f01027f230041106b220224002002200128020420012802006b41286d36020c20002002410c6a10a8011a02402001280200220320012802042201460d0003402000200310a9011a200341286a22032001470d000b0b200241106a240020000ba30201067f230041206b2202240002400240024020002802082203200028020422046b2001490d000340200441003a00002000200028020441016a22043602042001417f6a22010d000c020b0b2004200028020022056b220620016a2207417f4c0d012002411c6a200041086a360200410021040240200320056b220341017422052007200520074b1b41ffffffff07200341ffffffff03491b2203450d002003102721040b2002200436020c2002200420036a3602182002200420066a22043602100340200441003a0000200441016a21042001417f6a22010d000b2002200436021420002002410c6a10a5010240200228021420022802102201460d00200220013602140b200228020c2201450d00200110280b200241206a24000f0b2000103f000b890101037f200120012802042000280204200028020022026b22036b2204360204024020034101480d0020042002200310041a200128020421040b200028020021032000200436020020012003360204200028020421042000200128020836020420012004360208200028020821042000200128020c3602082001200436020c200120012802043602000b5802027f017e2000200110a70122022802002001411c6a28020022006a200128021822036b41086a2101200020036bad21040340200141016a2101200442ff005621002004420788210420000d000b2002200136020020020b7403017f017e017f200128020420012d0000220241017620024101711bad2103200028020021020340200241016a2102200342ff005621042003420788210320040d000b200020023602000240200128020420012d0000220441017620044101711b2204450d002000200420026a3602000b20000b860102027f017e230041106b220224002000280204210320013502002104034020022004a741ff0071200442ff00562201410774723a000f0240200028020820036b41004a0d00410041c2d0001000200028020421030b2004420788210420032002410f6a410110041a2000200028020441016a220336020420010d000b200241106a240020000b19002000200110aa01200141106a109a01200141186a10ab010ba30101037f230041106b220224002002200128020420012d0000220341017620034101711b36020c20002002410c6a10a8011a0240200128020420012d00002203410176200341017122041b2203450d002001280208200141016a20041b210402402000280208200028020422016b20034e0d00410041c2d0001000200028020421010b20012004200310041a2000200028020420036a3602040b200241106a240020000b7801037f230041106b220224002002200128020420012802006b36020c20002002410c6a10a8011a02402000280208200028020422036b2001280204200128020022046b22014e0d00410041c2d0001000200028020421030b20032004200110041a2000200028020420016a360204200241106a240020000b3401017f024020012802182202450d002001411c6a2002360200200210280b024020012d0000410171450d00200128020810280b0b960103037f017e017f230041106b2202240020012802042203200128020022046b410575ad2105200028020021010340200141016a2101200542ff005621062005420788210520060d000b20002001360200024020042003460d0003402000200028020041086a3602002002200036020c200441086a2002410c6a410110b001200441206a22042003470d000b0b200241106a240020000b7501027f230041106b220224002002200128020420012802006b4105753602082000200241086a10a8011a02402001280200220320012802042201460d0003402002200036020c20002003109a011a200341086a2002410c6a410110af01200341206a22032001470d000b0b200241106a240020000b5401017f230041106b22032400200128020021012003200028021036020c20012003410c6a10a8011a02402000280210417f470d0010b101000b20012000109c011a2001200041046a10ba011a200341106a24000b6503027f017e017f20012802002203280200210120002802102204ad21050340200141016a2101200542ff005621062005420788210520060d000b2003200136020002402004417f470d0010b101000b2003200141046a3602002003200041046a10b2011a0b05001003000b980103037f017e017f230041106b2202240020012802042203200128020022046b41386dad2105200028020021010340200141016a2101200542ff005621062005420788210520060d000b20002001360200024020042003460d0003402002200036020c20042002410c6a410110b301200228020c2201200128020041026a360200200441386a22042003470d000b0b200241106a240020000b8c0103037f017e017f230041106b2203240020012802002204280200210120002802302205ad21060340200141016a2101200642ff005621072006420788210620070d000b200420013602002003200436020802402005417f470d0010b101000b200541027441dcc2006a28020021012003200341086a36020c2003410c6a20002001110200200341106a24000b170020002802002802002200200028020041216a3602000b170020002802002802002200200028020041216a3602000b220020002802002802002200200028020041226a3602002000200141246a10a7011a0b170020002802002802002200200028020041216a3602000b170020002802002802002200200028020041206a3602000b20002000280200280200220041e100410120012802001b20002802006a3602000b7801027f230041106b220224002002200128020420012802006b41386d3602082000200241086a10a8011a02402001280200220320012802042201460d0003402002200036020c20032002410c6a410110bb01200228020c200341346a10bc011a200341386a22032001470d000b0b200241106a240020000b6f01017f230041106b2203240020012802002101200320002802303602082001200341086a10a8011a20032001360204024020002802302201417f470d0010b101000b2001410274418cc3006a28020021012003200341046a36020c2003410c6a20002001110200200341106a24000b4001017f02402000280208200028020422026b41014a0d00410041c2d0001000200028020421020b20022001410210041a2000200028020441026a36020420000b2c01017f200028020028020021024100210003402002200120006a10be011a200041016a22004121470d000b0b4001017f02402000280208200028020422026b41004a0d00410041c2d0001000200028020421020b20022001410110041a2000200028020441016a36020420000b2c01017f200028020028020021024100210003402002200120006a10be011a200041016a22004121470d000b0b3f01017f200028020028020021024100210003402002200120006a10be011a200041016a22004121470d000b2002200141216a10c101200141246a10aa011a0b4001017f02402000280208200028020422026b41004a0d00410041c2d0001000200028020421020b20022001410110041a2000200028020441016a36020420000b2c01017f200028020028020021024100210003402002200120006a10be011a200041016a22004121470d000b0b2c01017f200028020028020021024100210003402002200120006a10be011a200041016a22004120470d000b0b6201027f230041106b220224004100210320002802002802002100200220012802004100473a000f20002002410f6a10be011a024020012802002201450d0003402000200120036a10be011a200341016a220341e000470d000b0b200241106a24000bbd0101027f230041c0006b22022400024020002001107c200141086a10702200280208200028020422036b411f4b0d00410041c0d4001000200028020421030b200241206a2003412010041a2000200028020441206a360204200241206a200241206a41206a2002109401200141286a200241186a290300370300200141206a200241106a290300370300200141186a2002290308370300200120022903003703102000200141306a1076200141316a10762101200241c0006a240020010b5001017f23004190026b22062400200641046a200410c70141aaff00200120022003200628028802200628028c0220051017210402402006280284022205450d00200510290b20064190026a240020040ba10203057f027e017f230041206b220224002002210341022104200141106a220521060340200641086a290300210720062903002108410f21090340200320096a20083c000020084208882007423886842108200742088821072009417f6a2209417f470d000b200641106a2106200341106a21032004417f6a22040d000b20022103410221060340200541086a290300210720052903002108410f21090340200320096a20083c000020084208882007423886842108200742088821072009417f6a2209417f470d000b200541106a2105200341106a21032006417f6a22060d000b2000413436028802200041003602800220002000360284022002200041346a36020820022000360204200220003602002002200110c8011a200241206a24000bda0102057f027e230041206b22022400200141106a210320002001109a01210420022105410221060340200341086a290300210720032903002108410f21000340200520006a20083c000020084208882007423886842108200742088821072000417f6a2200417f470d000b200341106a2103200541106a21052006417f6a22060d000b02402004280208200428020422006b411f4a0d00410041c2d0001000200428020421000b20002002412010041a2004200428020441206a3602042004200141306a109b01200141386a109c012100200241206a240020000b6b01037f0240200120002802042202200028020022036b41306d22044d0d002000200120046b10cb010f0b0240200120044f0d00024020022003200141306c6a2201460d00200041086a210403402004200241506a220210cc0120022001470d000b0b200020013602040b0b20002000200110cd01200141106a1070200141186a10cd01200141246a10cd010bf20101067f230041206b22022400200041086a210302400240024020002802082204200028020422056b41306d2001490d0003402003200510ce012000200028020441306a22053602042001417f6a22010d000c020b0b2005200028020022066b41306d220720016a220541d6aad52a4f0d012002410c6a200420066b41306d220441017422062005200620054b1b41d5aad52a200441aad5aa15491b2007200310cf0122052802082103200541106a280200210403402004200310ce012005200528020841306a22033602082001417f6a22010d000b2000200510d001200510d1011a0b200241206a24000f0b2000103f000b4700024020012d0024410171450d002001412c6a28020010280b024020012d0018410171450d00200141206a28020010280b024020012d0000410171450d00200128020810280b0ba90401067f230041206b220224002002410036021c200242003702142000200241146a107b1a0240024002402002280218220320022802142204460d00200241106a410036020020024200370308200320046b220541704f0d02024002402005410a4b0d00200220054101743a0008200241086a41017221060c010b2005410f72220741016a102721062002200536020c2002200741026a360208200220063602100b0340200620042d00003a0000200641016a2106200441016a22042003470d000b200641003a0000024020012d0000410171450d00200128020841003a00002001410036020420012d0000410171450d00200128020810280b20012002290308370200200141086a200241086a41086a280200360200410021040340200241086a20046a4100360200200441046a2204410c470d000b20022d0008410171450d01200228021010280c010b200241106a410036020020024200370308410021040340200241086a20046a4100360200200441046a2204410c470d000b024020012d0000410171450d00200128020841003a00002001410036020420012d0000410171450d00200128020810280b20012002290308370200200141086a200241086a41086a280200360200410021040340200241086a20046a4100360200200441046a2204410c470d000b20022d0008410171450d00200228021010280b024020022802142204450d0020022004360218200410280b200241206a240020000f0b200241086a102e000ba30101027f20014200370300200141086a4200370300410021020340200120026a4100360200200241046a2202410c470d000b2001420037031820014200370310200141206a4100360200200141186a2103410021020340200320026a4100360200200241046a2202410c470d000b200142003702242001412c6a4100360200200141246a2101410021020340200120026a4100360200200241046a2202410c470d000b0b6701017f410021042000410036020c200041106a2003360200024002402001450d00200141d6aad52a4f0d01200141306c102721040b2000200436020020002004200241306c6a220336020820002004200141306c6a36020c2000200336020420000f0b1003000b9f0101047f2001280204210202402000280204220320002802002204460d00200041086a210503402005200241506a200341506a220310d2012001200128020441506a220236020420032004470d000b200028020021040b2000200236020020012004360204200028020421032000200128020836020420012003360208200028020821032000200128020c3602082001200336020c200120012802043602000b1c01017f200010d301024020002802002201450d00200110280b20000bc10101027f20012002290300370300200141086a200241086a280200360200410021030340200220036a4100360200200341046a2203410c470d000b2001200229031037031020012002290318370318200141206a200241206a280200360200200241186a2104410021030340200420036a4100360200200341046a2203410c470d000b200120022902243702242001412c6a2002412c6a280200360200200241246a2102410021030340200220036a4100360200200341046a2203410c470d000b0b3d01027f02402000280208220120002802042202460d0003402000200141506a22013602082000280210200110cc01200028020822012002470d000b0b0b3d01027f02402000280208220120002802042202460d0003402000200141586a22013602082000280210200110ac01200028020822012002470d000b0b0b5d01037f02402000280204220120002802002202460d002001416c6a2101034002402001410c6a2203280200417f460d00200110d6011a0b2003417f360200200141746a2103200141606a210120032002470d000b0b200020023602040b1b0002402000280200450d00200010d701200028020010280b20000b7d01057f230041106b2201240002402000280204220220002802002203460d00200241486a210203400240200241306a22042802002205417f460d002001410f6a2002200541027441d8d5006a2802001102000b2004417f36020020022003472104200241486a210220040d000b0b20002003360204200141106a24000b02000b02000b1a00024020012d0024410171450d002001412c6a28020010280b0b02000b02000b0800200110de011a0b3701027f024020002802042201450d00200120012802042202417f6a36020420020d00200120012802002802081101002001103d0b20000b9e0201057f230041206b2202240002400240024020002802082203200028020422046b4105752001490d00034020044200370300200441186a4200370300200441106a4200370300200441086a42003703002000200028020441206a22043602042001417f6a22010d000c020b0b2004200028020022056b410575220620016a220441808080c0004f0d012002410c6a200320056b220341047522052004200520044b1b41ffffff3f200341e0ffffff07491b2006200041086a10e00122032802082104034020044200370300200441186a4200370300200441106a4200370300200441086a4200370300200441206a21042001417f6a22010d000b200320043602082000200310e101200310e2011a0b200241206a24000f0b2000103f000b6801017f410021042000410036020c200041106a2003360200024002402001450d00200141808080c0004f0d012001410574102721040b200020043602002000200420024105746a22033602082000200420014105746a36020c2000200336020420000f0b1003000bab0101047f2001280204210202402000280204220320002802002204460d000340200241606a200341606a2205290300370300200241686a200341686a10e3011a2001200128020441606a22023602042005210320052004470d000b200028020021040b2000200236020020012004360204200028020421022000200128020836020420012002360208200028020821022000200128020c3602082001200236020c200120012802043602000b2101017f2000200028020410e401024020002802002201450d00200110280b20000b7e01027f2000417f360210200041003a0000024020012802102202417f460d0020004100360204200041086a22034200370200200020012802043602042003200141086a2802003602002000410c6a2001410c6a2203280200360200200020012802003602002000200236021020034100360200200142003702040b20000b5601037f0240200028020822022001460d0003402000200241606a22033602080240200341186a2204280200417f460d002002416c6a10d6011a200028020821030b2004417f3602002003210220032001470d000b0b0b960101017f230041106b220324000240024020020d002003410c6a410036020020034200370204200020031090011a2000200341046a220210e6011a02402001280210417f460d00200141046a10d6011a0b2001200329020037020020014100360210200141086a20032902083702002003410036020420034200370208200210d6011a0c010b410041a4d60010000b200341106a24000b7601027f230041106b220224002002410036020020002002107c1a2001200228020010e70102402001280200220320012802042201460d00034020022000360204200220033602082002200341346a36020c200241086a200241046a10e801200341386a22032001470d000b0b200241106a240020000bad0101047f230041106b2202240002400240200120002802042203200028020022046b41386d22054d0d002000200120056b10e9010c010b200120054f0d00024020032004200141386c6a2204460d00200341486a210103400240200141306a22052802002203417f460d002002410f6a2001200341027441d8d5006a2802001102000b2005417f36020020012004472105200141486a210120050d000b0b200020043602040b200241106a24000b4d01037f230041106b2202240020002802002103200128020021042002410036020c20042002410c6a107c1a20042003200228020c10f501200128020020002802041091011a200241106a24000be40101057f230041206b2202240002400240024020002802082203200028020422046b41386d2001490d00034020044100413810011a2000200028020441386a22043602042001417f6a22010d000c020b0b2004200028020022056b41386d220620016a220441a592c9244f0d012002410c6a200320056b41386d220341017422052004200520044b1b41a492c92420034192c9a412491b2006200041086a10ea01220328020821040340200441004138100141386a21042001417f6a22010d000b200320043602082000200310eb01200310ec011a0b200241206a24000f0b2000103f000b6701017f410021042000410036020c200041106a2003360200024002402001450d00200141a592c9244f0d01200141386c102721040b2000200436020020002004200241386c6a220336020820002004200141386c6a36020c2000200336020420000f0b1003000b6d01017f200041086a20002802002000280204200141046a10ed01200028020021022000200128020436020020012002360204200028020421022000200128020836020420012002360208200028020821022000200128020c3602082001200236020c200120012802043602000b1c01017f200010ee01024020002802002201450d00200110280b20000baf0101067f230041106b22042400024020022001460d00200241486a2102200328020021050340200541486a220641003a0000200641306a2207417f3602000240200241306a22082802002209417f460d002004410f6a20062002200941027441f0d5006a280200110300200720082802003602000b2005417c6a200241346a2f01003b01002003200328020041486a220536020020022001472106200241486a210220060d000b0b200441106a24000b7701057f230041106b2201240002402000280208220220002802042203460d0003402000200241486a22023602080240200241306a22042802002205417f460d002001410f6a2002200541027441d8d5006a280200110200200028020821020b2004417f36020020022003470d000b0b200141106a24000b0b0020012002412110041a0b0b0020012002412110041a0b480020012002412210042201412c6a2002412c6a28020036020020012002290224370224200241246a2101410021020340200120026a4100360200200241046a2202410c470d000b0b0b0020012002412110041a0b3c0020012002290200370200200141186a200241186a290200370200200141106a200241106a290200370200200141086a200241086a2902003702000b130020012002290200370200200242003702000b7f01017f230041306b220324000240024020020d0041002102034020002003410e6a20026a10761a200241016a22024121470d000b024020012802302202417f460d002003412f6a2001200241027441d8d5006a2802001102000b20012003410e6a4121100441003602300c010b20002001200210f6010b200341306a24000b820101017f230041306b220324000240024020024101470d0041002102034020002003410e6a20026a10761a200241016a22024121470d000b024020012802302202417f460d002003412f6a2001200241027441d8d5006a2802001102000b20012003410e6a4121100441013602300c010b20002001200210f7010b200341306a24000ba00201027f230041c0006b220324000240024020024102470d00200341386a410036020020034200370230412421022003410c6a41246a210403402003410c6a20026a4100360200200241046a22024130470d000b41002102034020002003410c6a20026a10761a200241016a22024121470d000b20002003412d6a10f801200410cd011a024020012802302202417f460d002003413f6a2001200241027441d8d5006a2802001102000b20012003410c6a412210042200412c6a200441086a280200360200200020042902003702244124210203402003410c6a20026a4100360200200241046a22024130470d000b2000410236023020032d0030410171450d01200341386a28020010280c010b20002001200210f9010b200341c0006a24000b3d01017f0240200028020820002802042202470d00410041c0d4001000200028020421020b20012002410110041a2000200028020441016a36020420000b820101017f230041306b220324000240024020024103470d0041002102034020002003410e6a20026a10761a200241016a22024121470d000b024020012802302202417f460d002003412f6a2001200241027441d8d5006a2802001102000b20012003410e6a4121100441033602300c010b20002001200210fa010b200341306a24000bbc0101017f230041306b220324000240024020024104470d0041002102034020002003410f6a20026a10761a200241016a22024120470d000b024020012802302202417f460d002003412f6a2001200241027441d8d5006a2802001102000b2001200329000f37000020014104360230200141186a2003410f6a41186a290000370000200141106a2003410f6a41106a290000370000200141086a2003410f6a41086a2900003700000c010b20002001200210fb010b200341306a24000b840101017f230041106b220324000240024020024105470d00200342003702042000200341046a10fc011a024020012802302202417f460d002003410f6a2001200241027441d8d5006a2802001102000b200120032902043702002001410536023020034200370204200341046a10de011a0c010b410041a4d60010000b200341106a24000be30102037f017e230041106b220224002000200241086a10761a0240024020022d0008450d000240200128020022030d0041ec00102722034190d600360200200342003702042003410c6a410041e000100121042001290200210520012004360200200120033602042002420037020020022005370208200241086a10de011a200210de011a200128020021030b4100210103402000200320016a10761a200141016a220141e000470d000c020b0b20012902002105200142003702002002420037020020022005370208200241086a10de011a200210de011a0b200241106a240020000b08002000103c10280b02000b0600200010280b800101057f230041106b2201240002402000280204220220002802002203460d00200241486a210203400240200241306a22042802002205417f460d002001410f6a2002200541027441d8d5006a2802001102000b2004417f360200200241786a2104200241406a210220042003470d000b0b20002003360204200141106a24000be60101057f230041206b2202240002400240024020002802082203200028020422046b4106752001490d0003402004410041c00010011a2000200028020441c0006a22043602042001417f6a22010d000c020b0b2004200028020022056b410675220620016a220441808080204f0d012002410c6a200320056b220341057522052004200520044b1b41ffffff1f200341c0ffffff07491b2006200041086a1082022203280208210403402004410041c000100141c0006a21042001417f6a22010d000b200320043602082000200310830220031084021a0b200241206a24000f0b2000103f000b6701017f410021042000410036020c200041106a2003360200024002402001450d00200141808080204f0d012001410674102721040b200020043602002000200420024106746a22033602082000200420014106746a36020c2000200336020420000f0b1003000b6d01017f200041086a20002802002000280204200141046a108502200028020021022000200128020436020020012002360204200028020421022000200128020836020420012002360208200028020821022000200128020c3602082001200236020c200120012802043602000b1c01017f2000108602024020002802002201450d00200110280b20000bb10101057f230041106b22042400024020022001460d00200241406a2102200328020021050340200541406a22052002290300370300200541386a2206417f360200200541086a220541003a00000240200241386a22072802002208417f460d002004410f6a2005200241086a200841027441f0d5006a280200110300200620072802003602000b2003200328020041406a220536020020022001472106200241406a210220060d000b0b200441106a24000b7e01067f230041106b2201240002402000280208220220002802042203460d0003402000200241406a22043602080240200441386a22052802002206417f460d002001410f6a200241486a200641027441d8d5006a280200110200200028020821040b2005417f3602002004210220042003470d000b0b200141106a24000bab040020001043024020012000520d00024002400240024002400240024002400240200242ffffff95cdebd4d942550d000240200242fffffffffff698d942550d0002402002428fa9d9d9dd8c99d6ba7f550d00200242808080e8b2edc0d38b7f510d032002428080f9d4a98499dc9a7f520d0a20012001106f0f0b20024290a9d9d9dd8c99d6ba7f510d0320024280808080daac9bd6ba7f520d09200120011092010f0b0240200242ffffffffd3c4a2d942550d002002428080808080f798d942510d042002428080b8f6a4979ad942520d0920012001107f0f0b20024280808080d4c4a2d942510d04200242f0aadf8bcde9add942520d0820012001108b010f0b0240200242ffffacd68db8baf154550d000240200242ffdfde8293fad6d942550d0020024280808096cdebd4d942510d0620024280808080b6f7d6d942520d0920012001107e0f0b20024280e0de8293fad6d942510d06200242808080c093fad6d942520d08200120011081010f0b0240200242ffffffcfb2b3bb9932550d002002428080add68db8baf154510d072002428080add68d959ba955520d082001200110710f0b02402002428080add68d95abd1ca00510d00200242808080d0b2b3bb9932520d08200120011093010f0b2001200110720f0b2001200110730f0b200120011095010f0b20012001107a0f0b2001200110750f0b20012001108e010f0b200120011086010f0b2001200110740f0b2001428080808080c0bad847510d0041004201101d0b0b0d00101e2000200120021087020b0b971706004180c0000b4a6661696c656420746f20616c6c6f6361746520706167657300656e636f756e7465726564206e6f6e2d62617365363420636861726163746572005055425f424c535f00000000000000000041cac0000bdf0200000000000030303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839396461746173747265616d20617474656d7074656420746f20777269746520706173742074686520656e6400000100000002000000030000000400000005000000060000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000700000008000000090000000a0000000b0000000c00000000000000000041a9c3000b81080000000000000000000000020000000300000005000000070000000b0000000d0000001100000013000000170000001d0000001f00000025000000290000002b0000002f000000350000003b0000003d0000004300000047000000490000004f00000053000000590000006100000065000000670000006b0000006d000000710000007f00000083000000890000008b00000095000000970000009d000000a3000000a7000000ad000000b3000000b5000000bf000000c1000000c5000000c7000000d3000000010000000b0000000d0000001100000013000000170000001d0000001f00000025000000290000002b0000002f000000350000003b0000003d0000004300000047000000490000004f00000053000000590000006100000065000000670000006b0000006d00000071000000790000007f00000083000000890000008b0000008f00000095000000970000009d000000a3000000a7000000a9000000ad000000b3000000b5000000bb000000bf000000c1000000c5000000c7000000d1000000404040404040404040404040404040404040404040404040404040404040404040404040404040404040403e4040403f3435363738393a3b3c3d40404040404040000102030405060708090a0b0c0d0e0f101112131415161718194040404040401a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040403e40403435363738393a3b3c3d40404040404040000102030405060708090a0b0c0d0e0f10111213141516171819404040403f401a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132334040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404077726f6e6720656e636f64656420737472696e672073697a65005349475f424c535f00424c535f5349475f424c53313233383147325f584d443a5348412d3235365f535357555f524f5f4e554c5f00424c535f504f505f424c53313233383147325f584d443a5348412d3235365f535357555f524f5f504f505f0041aacb000b820800bbc622db0af03afbef1a7af93fe8556c58ac1b173f3a4ea105b974974f8c68c30faca94f8c63952694d79731a7d3f117cac239b9d6dc54ad1b75cb0eba386f4e3642accad5b95566c907b51def6a8167f2212ecfc8767daaa845d555681d4d116e756d626572206f662066696e616c697a657273206578636565647320746865206d6178696d756d20616c6c6f7765640072657175697265206174206c65617374206f6e652066696e616c697a6572005055425f424c53005349475f424c530046696e616c697a6572206465736372697074696f6e2067726561746572207468616e206d617820616c6c6f7765642073697a65007075626c6963206b65792073686f756c642073746172742077697468205055425f424c530070726f6f66206f6620706f7373657373696f6e207369676e61747572652073686f756c642073746172742077697468205349475f424c530073756d206f662077656967687473206361757365732075696e7436345f74206f766572666c6f77006475706c6963617465207075626c6963206b65790070726f6f66206f6620706f7373657373696f6e206661696c65640066696e616c697a657220706f6c696379207468726573686f6c64206d7573742062652067726561746572207468616e2068616c66206f66207468652073756d206f662074686520776569676874732c20616e64206c657373207468616e206f7220657175616c20746f207468652073756d206f66207468652077656967687473006665617475726520646967657374206163746976617465643a20000a0070726f746f636f6c2066656174757265206973206e6f7420616374697661746564004b5620777269746520726566757365640062655f6b65795f73747265616d3a206b657920746f6f206c61726765006461746173747265616d20617474656d7074656420746f20777269746520706173742074686520656e6400656e636f64656420626173653634206b657920697320746f6f2073686f72740062617365363420656e636f6465642074797065206d75737420626567696e2066726f6d20636f72726573706f6e64696e6720707265666978006465636f6465642073697a65200020646f65736e2774206d61746368207374727563747572652073697a652000202b20636865636b73756d2000636865636b73756d206f662073747275637475726520646f65736e2774206d6174636800982f8a4291443771cffbc0b5a5dbb5e95bc25639f111f159a4823f92d55e1cab98aa07d8015b8312be853124c37d0c55745dbe72feb1de80a706dc9b74f19bc1c1699be48647beefc69dc10fcca10c246f2ce92daa84744adca9b05cda88f97652513e986dc631a8c82703b0c77f59bff30be0c64791a7d55163ca0667292914850ab72738211b2e0041acd3000bba03fc6d2c4d130d385354730a65bb0a6a762ec9c281852c7292a1e8bfa24b661aa8708b4bc2a3516cc719e892d1240699d685350ef470a06a1016c1a419086c371e4c774827b5bcb034b30c1c394aaad84e4fca9c5bf36f2e68ee828f746f63a5781478c8840802c78cfaffbe90eb6c50a4f7a3f9bef27871c67075626c6963206b65792068617320612077726f6e672073697a65006461746173747265616d20617474656d7074656420746f207265616420706173742074686520656e640048797065727669736f722072657475726e656420756e657870656374656420636f64652068617368207374727563742076657273696f6e0067657400616374696f6e206461746120686173206279746573206c6566742061667465722074686520617267756d656e747300000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e00000000000000000000001f00000020000000210000002200000023000000696e76616c69642076617269616e7420696e64657800756e6578706563746564206572726f7220696e2066697865645f627974657320636f6e7374727563746f72000041000b04002d00000001d00f01001f06ea9a71da19f2eccab0e1595db5ff3bddff48909f5d4b55dcb1776b8506f5d61a72b3040648657772449f2e28590af384b1293d1c273fe85b9081bc768418cd00008915868574670200247d62d500000000010000000000eab0c700000000b863b2c2010000000000eab0c700000000a8ed3232d6140000000000eab0c7cc140e737973696f3a3a6162692f312e320117626c6f636b5f7369676e696e675f617574686f726974792276617269616e745f626c6f636b5f7369676e696e675f617574686f726974795f76301e086162695f686173680004056f776e6572046e616d6504686173680b636865636b73756d3235360a757064617465645f61740a74696d655f706f696e7409626c6f636b5f6e756d0675696e7433320b616269686173685f6b65790001056f776e65720675696e74363408616374697661746500010e666561747572655f6469676573740b636865636b73756d32353609617574686f726974790003097468726573686f6c640675696e743332046b6579730c6b65795f7765696768745b5d086163636f756e7473197065726d697373696f6e5f6c6576656c5f7765696768745b5d1a626c6f636b5f7369676e696e675f617574686f726974795f76300002097468726573686f6c640675696e743332046b6579730c6b65795f7765696768745b5d15626c6f636b636861696e5f706172616d65746572730011136d61785f626c6f636b5f6e65745f75736167650675696e7436341a7461726765745f626c6f636b5f6e65745f75736167655f7063740675696e743332196d61785f7472616e73616374696f6e5f6e65745f75736167650675696e743332106e65745f75736167655f6c65657761790675696e743332136d61785f626c6f636b5f6370755f75736167650675696e7433321a7461726765745f626c6f636b5f6370755f75736167655f7063740675696e743332196d61785f7472616e73616374696f6e5f6370755f75736167650675696e743332196d696e5f7472616e73616374696f6e5f6370755f75736167650675696e743332186d61785f7472616e73616374696f6e5f6c69666574696d650675696e743332156d61785f7472616e73616374696f6e5f64656c61790675696e743332166d61785f696e6c696e655f616374696f6e5f73697a650675696e743332176d61785f696e6c696e655f616374696f6e5f64657074680675696e743136136d61785f617574686f726974795f64657074680675696e7431361c6d61785f616374696f6e5f72657475726e5f76616c75655f73697a650675696e7433320f6d61785f6b765f6b65795f73697a650675696e743332116d61785f6b765f76616c75655f73697a650675696e743332196d61785f6b765f7365636f6e646172795f6b65795f73697a650675696e74333209636f64655f686173680004056f776e6572046e616d6504686173680b636865636b73756d3235360a757064617465645f61740a74696d655f706f696e7409626c6f636b5f6e756d0675696e7433320c636f6465686173685f6b65790001056f776e65720675696e7436340a64656c657465617574680002076163636f756e74046e616d650a7065726d697373696f6e046e616d651366696e616c697a65725f617574686f7269747900040b6465736372697074696f6e06737472696e67067765696768740675696e7436340a7075626c69635f6b657906737472696e6703706f7006737472696e671066696e616c697a65725f706f6c6963790002097468726573686f6c640675696e7436340a66696e616c697a6572731566696e616c697a65725f617574686f726974795b5d0a6b65795f7765696768740002036b65790a7075626c69635f6b6579067765696768740675696e743136086c696e6b617574680004076163636f756e74046e616d6504636f6465046e616d650474797065046e616d650b726571756972656d656e74046e616d650a6e65776163636f756e7400040763726561746f72046e616d65046e616d65046e616d65056f776e657209617574686f726974790661637469766509617574686f72697479107065726d697373696f6e5f6c6576656c0002056163746f72046e616d650a7065726d697373696f6e046e616d65177065726d697373696f6e5f6c6576656c5f77656967687400020a7065726d697373696f6e107065726d697373696f6e5f6c6576656c067765696768740675696e7431361270726f64756365725f617574686f7269747900020d70726f64756365725f6e616d65046e616d6509617574686f7269747917626c6f636b5f7369676e696e675f617574686f726974790c70726f64756365725f6b657900020d70726f64756365725f6e616d65046e616d6511626c6f636b5f7369676e696e675f6b65790a7075626c69635f6b65790c72657161637469766174656400010e666561747572655f6469676573740b636865636b73756d323536077265716175746800010466726f6d046e616d65067365746162690002076163636f756e74046e616d65036162690562797465730a736574616c696d6974730004076163636f756e74046e616d650972616d5f627974657305696e7436340a6e65745f77656967687405696e7436340a6370755f77656967687405696e74363407736574636f64650004076163636f756e74046e616d6506766d747970650575696e743809766d76657273696f6e0575696e743804636f64650562797465730c73657466696e616c697a657200011066696e616c697a65725f706f6c6963791066696e616c697a65725f706f6c69637909736574706172616d73000106706172616d7315626c6f636b636861696e5f706172616d657465727307736574707269760002076163636f756e74046e616d650769735f707269760575696e74380b73657470726f646b6579730001087363686564756c650e70726f64756365725f6b65795b5d0873657470726f64730001087363686564756c651470726f64756365725f617574686f726974795b5d0a756e6c696e6b617574680003076163636f756e74046e616d6504636f6465046e616d650474797065046e616d650a757064617465617574680004076163636f756e74046e616d650a7065726d697373696f6e046e616d6506706172656e74046e616d65046175746809617574686f72697479100000002a9bed3232086163746976617465000040cbdaa8aca24a0a64656c65746561757468000000002d6b03a78b086c696e6b617574680000409e9a2264b89a0a6e65776163636f756e7400905436db6564acba0c72657161637469766174656400000000a0656dacba07726571617574680000000000b863b2c206736574616269000000ce4eba68b2c20a736574616c696d6974730000000040258ab2c207736574636f64650070d577d14cb7b2c20c73657466696e616c697a6572000000c0d25c53b3c209736574706172616d730000000060bb5bb3c207736574707269760000b05730d15bb3c20b73657470726f646b6579730000000038d15bb3c20873657470726f6473000040cbdac0e9e2d40a756e6c696e6b61757468000040cbdaa86c52d50a75706461746561757468000207616269686173680369363401056f776e6572010675696e743634086162695f6861736826c10008636f6465686173680369363401056f776e6572010675696e74363409636f64655f68617368aa3f00000000012276617269616e745f626c6f636b5f7369676e696e675f617574686f726974795f7630011a626c6f636b5f7369676e696e675f617574686f726974795f7630000000000000 0100000000000000010000003f1003932b9dca7b8cdc385ee87ac6a5d656bfef648434a6e167c9f37756020086cd31576daabfaac772e248b9f1207e3260bebc46838ea1961482cfe47901e701000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f59800000000060a2b8f79e430caabf02b64e541abc8ad54dc7538a8588ce239edfce457755e0001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 +DMLOG APPLIED_TRANSACTION 3 25f421300276271937f13f4b1121c55eabb25df362b0b09c85f850d5603aa3350300000002000000010000000305fdee1bb22e7184e00096ba290ef81298fb4ac18449cdc73e493329010164640000000000000000000000000000000001010000010000000000eab0c7ea2d9e1003d4e2079e792230ba588be16f41032b290324fa071c34c0b6fc7e5a02000000000000000200000000000000010000000000eab0c7020000000000000000000000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274010000000000000000eab0c700000001cbe9c4c147bc3f3434f9d82409e76d09ea58905aefe7fb5415912d9a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000164000025f421300276271937f13f4b1121c55eabb25df362b0b09c85f850d5603aa3350300000002000000010000000305fdee1bb22e7184e00096ba290ef81298fb4ac18449cdc73e49332900000000000000 +DMLOG CREATION_OP ROOT 0 +DMLOG RAM_OP 0 sysio code add setcode sysio 423227 420060 +DMLOG KV_OP INS 0 sysio sysio 16298 c7b0ea0000000000 0000000000eab0c7a5d74fb8dce928791bc75c47ffe6140dfc68128dc18b04b36367f8b7dcfbc10440a21bba992a060003000000 +DMLOG RAM_OP 0 sysio:16298:c7b0ea0000000000 table_row add primary_index_add sysio 423399 172 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":2,"value_ex":243941,"consumed":42153},"cpu_usage":{"last_ordinal":2,"value_ex":12732,"consumed":2101},"ram_usage":423399} +DMLOG APPLIED_TRANSACTION 3 1da8598d87ce1542e3195caf898b7a57a37786088063509192cd832d660226b00300000002000000010000000305fdee1bb22e7184e00096ba290ef81298fb4ac18449cdc73e4933290101d00fd00f0000000000000000a9a400000000000001010000010000000000eab0c7dd3eef49b763fc26e44f336f6bcde598af10d7e74a1d0ec0755c67c7e7b4a9e303000000000000000300000000000000010000000000eab0c7030000000000000001000000000000eab0c70000000000eab0c700000040258ab2c2010000000000eab0c700000000a8ed3232a3c8020000000000eab0c7000096c8020061736d0100000001e1012160000060017f0060027f7f0060037f7f7f0060037f7f7f017f60027f7f017e6000017e6000017f60017e0060037e7f7f0060077f7f7f7f7f7f7f017f60027e7f0060047e7e7e7e0060037e7f7f017e60017f017f60027f7f017f60077f7e7f7f7f7f7f017f60047f7f7f7f017f60067f7f7f7f7f7f017f60047e7f7f7f017f60027f7e0060047f7e7e7f0060057f7f7f7f7f017f60087f7f7f7f7f7f7f7f0060077f7f7f7f7f7f7f0060017d017d60047f7f7f7f0060037f7e7f0060047f7e7f7f0060027e7e0060067f7e7f7f7f7f017f60067f7f7f7f7f7f0060037e7e7e0002df041e03656e760c737973696f5f617373657274000203656e76066d656d736574000403656e76076d656d6d6f7665000403656e760561626f7274000003656e76066d656d637079000403656e7606736861323536000303656e7609726970656d64313630000303656e76207365745f626c6f636b636861696e5f706172616d65746572735f7061636b6564000203656e76167365745f70726f706f7365645f70726f647563657273000503656e760c63757272656e745f74696d65000603656e760d6765745f626c6f636b5f6e756d000703656e760c726571756972655f61757468000803656e760e7365745f66696e616c697a657273000903656e760b626c735f70616972696e67000a03656e760e7365745f70726976696c65676564000b03656e76137365745f7265736f757263655f6c696d697473000c03656e76197365745f70726f706f7365645f70726f6475636572735f6578000d03656e761370726561637469766174655f66656174757265000103656e76067072696e7473000103656e761469735f666561747572655f616374697661746564000e03656e7610616374696f6e5f646174615f73697a65000703656e7610726561645f616374696f6e5f64617461000f03656e7614737973696f5f6173736572745f6d657373616765000303656e76066b765f736574001003656e760a626c735f66705f6d6f64001103656e760a626c735f67325f6d6170001103656e760a626c735f67325f616464001203656e760d6765745f636f64655f68617368001303656e76087072696e74686578000203656e7611737973696f5f6173736572745f636f6465001403ed01eb010001010e0f0100040e0e010104150f0f010f16171802040f0211040402020e010f01030f0308010f02020206190e1a000f0100010001000100020100011b1c020203030f0f020e11020e030302020202021d0f1d1d1d1d1d0f1c1b1c1d0f0f021d1d0f1d0f0e02021d0f0e02021d0f0e1d0f0f0f1d1d031d141e020f0f0f0f1f030201010f0f02020f0f0f0f0f0f020f0f0303000f030202020202020f030f020f02020f0202020f1e020f020f02020f0211020e030101010e010202020202020e0211020e0f02030f02020211020e1a010303030303030303030f0303030f010101010211020e1a0120200405017001242405030100010616037f014180c0000b7f0041f8d9000b7f004180da000b072e04066d656d6f727902000a5f5f646174615f656e6403010b5f5f686561705f626173650302056170706c790088020944010041010b23b401b501b601b701b801b901bd01bf01c001c201c301c4014f515355585ad801d901da01db01dc01dd01ef01f001f101f201f301f4013cfd01fe013eff010aa0a702eb0110001024104d105010521054105610590b0900200041013602000b0900200041003602000b7201037f024020000d0041000f0b410041002802f456200041107622016a22023602f456410041002802ec56220320006a410f6a41707122003602ec560240200241107420004b0d004100200241016a3602f456200141016a21010b024020014000417f470d0041004180c00010000b20030b8a0101037f0240200120006c22000d0041000f0b410041002802f456200041107622026a22033602f456410041002802ec56220120006a410f6a41707122043602ec560240200341107420044b0d004100200341016a3602f456200241016a21020b024020024000417f470d0041004180c00010000b024020010d0041000f0b20014100200010011a20010b02000b3601017f230041106b2200410036020c4100200028020c280200410f6a41707122003602e856410020003602ec5641003f003602f4560b990101037f41f8d600101f024041002802805722030d004188d700210341004188d700360280570b0240024041002802845722044120470d0002404184024101102222030d00417f21050c020b41002104200341002802805736020041002003360280570b410021054100200441016a36028457200320044102746a22034184016a2001360200200341046a20003602000b41f8d600102020050bcc0101037f20002101024002402000410371450d00024020002d00000d00200020006b0f0b200041016a2201410371450d0020012d0000450d01200041026a2201410371450d0020012d0000450d01200041036a2201410371450d0020012d0000450d01200041046a22014103710d010b2001417c6a21022001417b6a21010340200141046a2101200241046a22022802002203417f73200341fffdfb776a7141808182847871450d000b0340200141016a210120022d00002103200241016a210220030d000b0b200120006b0b3601027f20004101200041014b1b2101024003402001102122000d0141002100410028028c592202450d0120021100000c000b0b20000b0600200010230b0600200010280b4901037f4100210302402002450d000240034020002d0000220420012d00002205470d01200141016a2101200041016a21002002417f6a22020d000c020b0b200420056b21030b20030b6a01017e4200210402400240200341ff004d0d00420021020c010b024020030d00200121040c010b02402003413f4b0d00200141c00020036bad8820022003ad220486842102200120048621040c010b2001200341406aad8621020b20002002370308200020043703000bf90101027f0240200041ffc1d72f4b0d0020012000102d0f0b200020004180c2d72f6e22024180c2d72f6c6b210302400240200041ff93ebdc034b0d00200120024130723a0000410121000c010b410221002001200241017441d0c0006a410210041a0b200120006a220020034190ce006e220141ffff037141e4006e220241017441d0c0006a410210041a200041026a2001200241e4006c6b41017441feff037141d0c0006a410210041a200041046a200320014190ce006c6b220141ffff037141e4006e220341017441d0c0006a410210041a200041066a2001200341e4006c6b41017441feff037141d0c0006a410210041a200041086a0bda0301027f02402001418fce004b0d000240200141e3004b0d000240200141094b0d00200020014130723a0000200041016a0f0b2000200141017441d0c0006a410210041a200041026a0f0b200141ffff0371220241e4006e21030240200141e7074b0d00200020034130723a0000200041016a200241e4007041017441d0c0006a410210041a200041036a0f0b2000200341017441d0c0006a410210041a200041026a2001200341e4006c6b41017441feff037141d0c0006a410210041a200041046a0f0b20014190ce006e210302400240200141bf843d4b0d0002402001419f8d064b0d00200020034130723a0000410121020c020b410221022000200341017441d0c0006a410210041a0c010b0240200141fface2044b0d002000200341ffff037141e4006e22024130723a0000200041016a2003200241e4006c6b41017441feff037141d0c0006a410210041a410321020c010b2000200141c0843d6e41017441d0c0006a410210041a200041026a200341e4007041017441d0c0006a410210041a410421020b200020026a2200200120034190ce006c6b220141ffff037141e4006e220341017441d0c0006a410210041a200041026a2001200341e4006c6b41017441feff037141d0c0006a410210041a200041046a0b05001003000bbb0101037f20004200370200200041086a22024100360200024020012d00004101710d00200020012902003702002002200141086a28020036020020000f0b02402001280204220241704f0d00200128020821030240024002402002410b490d002002410f72220441016a10272101200020023602042000200441026a360200200020013602080c010b200020024101743a0000200041016a21012002450d010b20012003200210041a0b200120026a41003a000020000f0b1003000bc50101047f20004200370200200041086a41003602000240200128020420012d00002205410176200541017122061b22052002490d00200520026b2205200320052003491b220341704f0d00200128020821070240024002402003410b490d002003410f72220841016a10272105200020033602042000200841026a360200200020053602080c010b200020034101743a0000200041016a21052003450d010b20052007200141016a20061b20026a200310041a0b200520036a41003a000020000f0b1003000bfc0101047f0240416e20016b2002490d00200041016a210820002d000041017121092000280208210a416f210b0240200141e6ffffff074b0d00410b200220016a22022001410174220b2002200b4b1b2202410f7241016a2002410b491b210b0b200a200820091b2108200b1027210202402004450d0020022008200410041a0b02402006450d00200220046a2007200610041a0b2003200520046a220a6b210902402003200a460d00200220046a20066a200820046a20056a200910041a0b02402001410a460d00200810280b200020023602082000200b4101723602002000200620046a20096a2204360204200220046a41003a00000f0b1003000bcb0101047f416f21070240416f20016b2002490d00200041016a210820002d000041017121092000280208210a0240200141e6ffffff074b0d00410b200220016a220720014101742202200720024b1b2207410f7241016a2007410b491b21070b200a200820091b210820071027210202402004450d0020022008200410041a0b02402003200520046a2209460d00200220046a20066a200820046a20056a200320096b10041a0b02402001410a460d00200810280b20002002360208200020074101723602000f0b1003000b820201067f0240200141704f0d00024020002d0000220220002802002203417e71417f6a2000280204200341017641ff007120034101711b22032001200320014b1b2201410f72220446712002410171452001410a4b22021b0d000240024020020d0041012102200041016a210520002802082106200321070c010b200441016a10272105200028020420002d00002202410176200241017122021b21072000280208200041016a20021b21060b0240200741016a2207450d0020052006200710041a0b02402002450d00200610280b02402001410b490d0020002005360208200020033602042000200441026a3602000f0b200020034101743a00000b0f0b1003000bb20101037f0240024020002802002203417e71417f6a410a20002d00004101711b22042000280204200341017641ff0071200341017122051b22036b2002490d002002450d012000280208200041016a20051b220420036a2001200210041a200320026a21020240024020002d0000410171450d00200020023602040c010b200020024101743a00000b200420026a41003a000020000f0b20002004200220046b20036a2003200341002002200110310b20000bb80101047f2001102621020240024020002802002203417e71417f6a410a20002d00004101711b22042000280204200341017641ff0071200341017122051b22036b2002490d002002450d012000280208200041016a20051b220420036a2001200210041a200320026a21020240024020002d0000410171450d00200020023602040c010b200020024101743a00000b200420026a41003a000020000f0b20002004200220046b20036a2003200341002002200110310b20000ba20101037f0240024002400240024020002d000022024101710d00410a2103410a210420024114460d01200241017621030c020b200028020422032000280200417e71417f6a2204470d020b2000200441012004200441004100103220002d00004101710d010b2000200341017441026a3a0000200041016a21000c010b2000200341016a360204200028020821000b200020036a220041003a0001200020013a00000bf80101037f0240200028020420002d00002204410176200441017122051b22042001490d000240024020002802002206417e71417f6a410a20051b220520046b2003490d002003450d012000280208200041016a20064101711b2105024020042001460d00200520016a220620036a2006200420016b10021a200220034100200520046a20024b1b4100200620024d1b6a21020b200520016a2002200310021a200420036a21030240024020002d0000410171450d00200020033602040c010b200020034101743a00000b200520036a41003a000020000f0b20002005200420036a20056b2004200141002003200210310b20000f0b1003000b0e002000200120022002102610370baa0101057f0240200028020420002d00002203410176200341017122041b22052001490d0002402002450d00200520016b2206200220062002491b21072000280208200041016a20041b21040240200620024d0d00200420016a2202200220076a200620076b10021a20002d000021030b200520076b2102024002402003410171450d00200020023602040c010b200020024101743a00000b200420026a41003a00000b20000f0b1003000b900201047f230041106b220224002001200241056a102c2103200041086a41003602002000420037020002402003200241056a6b220441704f0d00024002402004410a4b0d00200020044101743a0000200041016a21010c010b2004410f72220541016a10272101200020043602042000200541026a360200200020013602080b0240200241056a2003460d0002400240200441077122040d00200241056a21000c010b200241056a21000340200120002d00003a0000200141016a2101200041016a21002004417f6a22040d000b0b200241056a20036b41784b0d00034020012000290000370000200141086a2101200041086a22002003470d000b0b200141003a0000200241106a24000f0b1003000b900201047f230041106b220224002001200241056a102c2103200041086a41003602002000420037020002402003200241056a6b220441704f0d00024002402004410a4b0d00200020044101743a0000200041016a21010c010b2004410f72220541016a10272101200020043602042000200541026a360200200020013602080b0240200241056a2003460d0002400240200441077122040d00200241056a21000c010b200241056a21000340200120002d00003a0000200141016a2101200041016a21002004417f6a22040d000b0b200241056a20036b41784b0d00034020012000290000370000200141086a2101200041086a22002003470d000b0b200141003a0000200241106a24000f0b1003000b040020000b2801017f0240200028020822010d00200020002802002802101101000f0b20002001417f6a3602080b040041000b05001003000b2301017f230041206b2203240020012002200310052000200310411a200341206a24000bbd0301057e200131000f2102200131000e2103200131000d2104200020013100002205423886200542108620013100014208868420013100028442108620013100034208868420013100048442108620013100054208868420013100068422064208862205428080808080e0ffff008384200542808080f8ff1f838420054280feff0783842006421086200131000742088684200131000884421086200131000942088684200131000a84421086200131000b42088684200131000c8442108622054238888437030820002002200320052004420886848442088684370300200131001f2102200131001e2103200131001d2104200041186a20013100102205423886200542108620013100114208868420013100128442108620013100134208868420013100148442108620013100154208868420013100168422064208862205428080808080e0ffff008384200542808080f8ff1f838420054280feff0783842006421086200131001742088684200131001884421086200131001942088684200131001a84421086200131001b42088684200131001c844210862205423888843703002000200220032005200442088684844208868437031020000bed0102017f017e230041206b220324002001200220031006200020033100014208862003310000421086842003310002844228862003310005420886200331000684200331000342188620033100044210868484420886842003310009420886200331000a842003310007421886200331000842108684844220862204423888843703082000200331000d420886200331000e842004200331000b421886200331000c421086848484420886200331000f84370300200041186a200331001142088620033100104210868420033100128442288620033100134220868437030020004200370310200341206a24000b0a0041002000370390590b5101017f230041e0006b220124002001200141d8006a36020c2001200141106a3602082001200141106a360204200141046a200010451a200141106a200128020820012802046b1007200141e0006a24000bdc0801027f02402000280208200028020422026b41074a0d0041004198c2001000200028020421020b20022001410810041a2000200028020441086a2202360204200141086a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a22023602042001410c6a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141106a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141146a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141186a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a22023602042001411c6a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141206a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141246a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141286a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a22023602042001412c6a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141306a21030240200028020820026b41014a0d0041004198c2001000200028020421020b20022003410210041a2000200028020441026a2202360204200141326a21030240200028020820026b41014a0d0041004198c2001000200028020421020b20022003410210041a2000200028020441026a2202360204200141346a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141386a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a22023602042001413c6a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141c0006a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a22023602040240200028020820026b41034a0d0041004198c2001000200028020421020b2002200141c4006a410410041a2000200028020441046a36020420000b7402017f017e230041106b22022400200241046a200110470240024020022802042201200228020820016b100822034200530d0020002003370300410121010c010b41002101200041003a00000b200020013a0008024020022802042200450d0020022000360208200010280b200241106a24000baa0403047f017e027f230041206b2202240041002103200041003602082000420037020020012802042204200128020022056b410675ad21060340200341016a2103200642ff005621072006420788210620070d000b2002200336021402400240024020052004470d0041002107410021050c010b0340200228021441086a2107200541386a2802002208ad21060340200741016a2107200642ff005621032006420788210620030d000b200220073602142002200241146a3602182008417f460d02200841027441c4c2006a28020021072002200241186a360208200241086a200541086a2007110200200541c0006a22052004470d000b2000280200210720002802042105200228021421030b024002402003200520076b22084d0d002000200320086b10a40120002802002107200028020421050c010b200320084f0d002000200720036a22053602040b2002200736020c2002200736020820022007200520076b6a360210200128020420012802006b410675ad2106034020022006a741ff0071200642ff00562203410774723a00180240200228021020076b41004a0d0041004198c20010000b200642078821062007200241186a410110041a2002200228020c41016a220736020c20030d000b02402001280200220720012802042203460d0003402002200241086a360214200220073602182002200741086a36021c200241186a200241146a1048200741c0006a22072003470d000b0b200241206a24000f0b10b101000b930202047f017e230041106b2202240020002802002103024020012802002204280208200428020422056b41074a0d0041004198c2001000200428020421050b20052003410810041a2004200428020441086a360204200028020422053502302106200128020022042802042101034020022006a741ff0071200642ff00562200410774723a000b0240200428020820016b41004a0d0041004198c2001000200428020421010b2006420788210620012002410b6a410110041a2004200428020441016a220136020420000d000b20022004360204024020052802302204417f470d0010b101000b200441027441f4c2006a28020021042002200241046a36020c2002410c6a20052004110200200241106a24000b040010090b930101047f230041106b210102402000bc220241177641ff017122034195014b0d000240200341ff00490d0041ffffff03200341817f6a2203762204200271450d0120012000430000807b9238020c4100200420024100481b20026a418080807c20037571be0f0b20012000430000807b923802080240200241004e0d0043000000800f0b430000803f200020021b21000b20000bfb0e01067f02400240200041d3014b0d004130210141b0c300210203402002200141017622034102746a220441046a2002200428020020004922041b210220012003417f736a200320041b22010d000b200228020021020c010b02402000417c4f0d002000200041d2016e220541d2016c22066b21004130210141f0c400210203402002200141017622034102746a220441046a2002200428020020004922041b210220012003417f736a200320041b22010d000b200241f0c4006b41027521000340200041027441f0c4006a28020020066a210241d87e2101024003402002200141ecc4006a28020022036e22042003490d042002200420036c460d012002200141f0c4006a28020022036e22042003490d042002200420036c460d01200141086a22010d000b41a303210103402002200141b07e6a22036e22042003490d042002200420036c460d012002200141ba7e6a22046e22062003410a6a2203490d042002200620046c460d012002200141bc7e6a22046e2206200341026a2203490d042002200620046c460d012002200141c07e6a22046e2206200341046a2203490d042002200620046c460d012002200141c27e6a22046e2206200341026a2203490d042002200620046c460d012002200141c67e6a22046e2206200341046a2203490d042002200620046c460d012002200141cc7e6a22046e2206200341066a2203490d042002200620046c460d012002200141ce7e6a22046e2206200341026a2203490d042002200620046c460d012002200141d47e6a22046e2206200341066a2203490d042002200620046c460d012002200141d87e6a22046e2206200341046a2203490d042002200620046c460d012002200141da7e6a22046e2206200341026a2203490d042002200620046c460d012002200141de7e6a22046e2206200341046a2203490d042002200620046c460d012002200141e47e6a22046e2206200341066a2203490d042002200620046c460d012002200141ea7e6a22046e2206200341066a2203490d042002200620046c460d012002200141ec7e6a22046e2206200341026a2203490d042002200620046c460d012002200141f27e6a22046e2206200341066a2203490d042002200620046c460d012002200141f67e6a22046e2206200341046a2203490d042002200620046c460d012002200141f87e6a22046e2206200341026a2203490d042002200620046c460d012002200141fe7e6a22046e2206200341066a2203490d042002200620046c460d012002200141827f6a22046e2206200341046a2203490d042002200620046c460d012002200141887f6a22046e2206200341066a2203490d042002200620046c460d012002200141907f6a22046e2206200341086a2203490d042002200620046c460d012002200141947f6a22046e2206200341046a2203490d042002200620046c460d012002200141967f6a22046e2206200341026a2203490d042002200620046c460d0120022001419a7f6a22046e2206200341046a2203490d042002200620046c460d0120022001419c7f6a22046e2206200341026a2203490d042002200620046c460d012002200141a07f6a22046e2206200341046a2203490d042002200620046c460d012002200141a87f6a22046e2206200341086a2203490d042002200620046c460d012002200141ae7f6a22046e2206200341066a2203490d042002200620046c460d012002200141b27f6a22046e2206200341046a2203490d042002200620046c460d012002200141b87f6a22046e2206200341066a2203490d042002200620046c460d012002200141ba7f6a22046e2206200341026a2203490d042002200620046c460d012002200141be7f6a22046e2206200341046a2203490d042002200620046c460d012002200141446a22046e2206200341066a2203490d042002200620046c460d012002200141466a22046e2206200341026a2203490d042002200620046c460d0120022001414c6a22046e2206200341066a2203490d042002200620046c460d012002200141526a22046e2206200341066a2203490d042002200620046c460d012002200141566a22046e2206200341046a2203490d042002200620046c460d012002200141586a22046e2206200341026a2203490d042002200620046c460d0120022001415c6a22046e2206200341046a2203490d042002200620046c460d012002200141626a22046e2206200341066a2203490d042002200620046c460d012002200141646a22046e2206200341026a2203490d042002200620046c460d0120022001416a6a22046e2206200341066a2203490d042002200620046c460d0120022001416e6a22046e2206200341046a2203490d042002200620046c460d012002200141706a22046e2206200341026a2203490d042002200620046c460d012002200141746a22046e2206200341046a2203490d042002200620046c460d012002200141766a22046e2206200341026a2203490d042002200620046c460d01200220016e22042003410a6a490d04200420016c2103200141d2016a210120022003470d000b0b4100200041016a2202200241304622021b2100200520026a220541d2016c21060c000b0b1003000b20020bc20801097f230041206b220424000240024002400240200128020422050d0020004200370200200041086a41003602000c010b02402002450d00200441186a410036020020044200370310200541704f0d0220012802002102024002402005410b490d002005410f72220641016a10272101200420053602142004200641026a360210200420013602180c010b200420054101743a0010200441106a41017221010b20012002200510041a200120056a41003a000020042802182207200441106a410172220820042d0010220141017122021b2206200428021422092001410176220a20021b220b6a210c2006210102400240200b450d00200b210520062101034020012d0000410a460d01200141016a21012005417f6a22050d000b200c21010c010b2001200c460d00200141016a2205200c460d002006200b6a220220016b417e6a210b024020022001417f736a4103712202450d000340024020052d00002206410a460d00200120063a0000200141016a21010b200541016a21052002417f6a22020d000b0b0240200b4103490d000340024020052d00002202410a460d00200120023a0000200141016a21010b024020052d00012202410a460d00200120023a0000200141016a21010b024020052d00022202410a460d00200120023a0000200141016a21010b024020052d00032202410a460d00200120023a0000200141016a21010b200541046a2205200c470d000b0b20042d00102205410176210a2005410171210220042802142109200428021821070b200441106a20012007200820021b22056b20052009200a20021b6a20016b10391a2004200428021420042d00102201410176200141017122011b36020c20042004280218200820011b360208200420042902083703002000200441002003104c20042d0010410171450d01200428021810280c010b20004200370200200041086a41003602002000200541027641036c10332001280200210b410021010340200141016a20054f0d03024020034108742206200b20016a220241016a2d00007241b0c6006a2d0000220c41c000470d0041004199c00010000b0240200620022d00007241b0c6006a2d0000220841c000470d0041004199c00010000b20002008411a74200c4114744180808018717241187510360240200141026a20054f0d000240200241026a2d0000220841526a0e1001000000000000000000000000000001000b0240200620087241b0c6006a2d0000220841c000470d0041004199c00010000b2000200c411c74200841167441808080f80071724118751036200141036a20054f0d000240200241036a2d0000220241526a0e1001000000000000000000000000000001000b2008410674210c0240200620027241b0c6006a2d0000220241c000470d0041004199c00010000b20002002200c6a41187441187510360b200141046a22012005490d000b0b200441206a24000f0b200441106a102e000b410041b0ca0010001003000b2e00024041002d00a4594101710d00410041013a00a4594198d90041bac000104e1a410d41004180c00010251a0b0b8c0101037f20004200370200200041086a4100360200024020011026220241704f0d000240024002402002410b490d002002410f72220341016a10272104200020023602042000200341026a360200200020043602080c010b200020024101743a0000200041016a21042002450d010b20042001200210041a0b200420026a41003a000020000f0b2000102e000b1900024041002d009859410171450d0041002802a05910280b0b2e00024041002d00b4594101710d00410041013a00b45941a8d90041caca00104e1a410e41004180c00010251a0b0b1900024041002d00a859410171450d0041002802b05910280b0b2e00024041002d00c4594101710d00410041013a00c45941b8d90041d3ca00104e1a410f41004180c00010251a0b0b1900024041002d00b859410171450d0041002802c05910280b0b2e00024041002d00d4594101710d00410041013a00d45941c8d90041ffca00104e1a411041004180c00010251a0b0b1900024041002d00c859410171450d0041002802d05910280b0b7b01027f230041e0006b22002400024041002d00e4594101710d00410041013a00e459200041abcb0041e00010042101410042003702d859410041003602e05941d8d90041e000105741002802dc59200141e00010041a410041002802dc5941e0006a3602dc59411141004180c00010251a0b200041e0006a24000b2f01017f02402001417f4a0d002000103f000b2000200110272202360200200020023602042000200220016a3602080b1e01017f024041002802d8592201450d00410020013602dc59200110280b0b6e01027f024041002d00f4594101710d00410041013a00f459410041c004102722003602e8594100200041c0046a3602f059410021010340200020016a41003a0000200141016a220141c004470d000b200041013a00004100200020016a3602ec59411241004180c00010251a0b0b1e01017f024041002802e8592201450d00410020013602ec59200110280b0bae0102017f017e23004180016b2203240020002903002104200341e0006a20022802002200200228020420006b1040200342003703582003200437035020032001370348200341186a2003290368370300200341206a200341f0006a290300370300200341286a200341e0006a41186a2903003703002003200137030020032003290360370310200310493703302003100a360238200341d0006a2001200341c8006a2003105c20034180016a24000b4f01017f23004190026b220424002004410036028c022004410c6a20022903001096010240200020012004410c6a200428028c0220034100109701450d0041004194d00010000b20044190026a24000bbb1407027f017e0e7f017e027f027d067f23004190036b220224002000290300100b02402001410c6a2802002200200128020822036b41306d41818004490d004100418bcc00100020012802082103200128020c21000b024020002003470d00410041bccc00100020012802082103200128020c21000b20024188036a4100360200420021042002420037038003200220012903003703f802200241f8026a41086a2205200020036b41306d105e200241ec026a41dbcc00104e2106200241e0026a41e3cc00104e2107200241808080fc033602dc02200242003702d402200242003702cc02024020012802082208200128020c2209460d00200241cc026a41086a210a200741016a210b200641016a210c2002412c6a410172210d2002412c6a410172210e420021040340024020082d0000410171450d002008280204418102490d00410041ebcc0010000b2002412c6a200841186a22004100200628020420062d0000220341017620034101711b20001030210f0240024020022802302210200f2d000022114101762212201141017122031b200628020420062d00002200410176200041017122001b470d002006280208200c20001b2100024020030d00200e210320114102490d02034020032d000020002d0000470d02200041016a2100200341016a21032012417f6a22120d000c030b0b2010450d01200228023420002010102a450d010b4100419fcd0010000b0240200f2d0000410171450d00200228023410280b2002412c6a200841246a22004100200728020420072d0000220341017620034101711b20001030210f0240024020022802302210200f2d000022114101762212201141017122031b200728020420072d00002200410176200041017122001b470d002007280208200b20001b2100024020030d00200d210320114102490d02034020032d000020002d0000470d02200041016a2100200341016a21032012417f6a22120d000c030b0b2010450d01200228023420002010102a450d010b410041c4cd0010000b0240200f2d0000410171450d00200228023410280b0240200829031022132004427f85580d00410041fccd001000200829031021130b200241ec016a200841206a280200200841196a20082d0018220041017122031b2008411c6a280200200041017620031b105f2002410036022c2002412c6a200241ec016a410410041a200228022c211002400240024020022802d0022212450d000240024020126941014b22110d002012417f6a201071210f0c010b2010210f20102012490d002010201270210f0b20022802cc02200f4102746a2802002200450d002012417f6a2114034020002802002200450d010240200028020422032010460d000240024020110d00200320147121030c010b20032012490d00200320127021030b2003200f470d020b200041086a200241ec016a41e000102a0d000b410041a4ce0010000c010b41e8001027221541086a200241ec016a41e00010041a201541003602002015201036020420022a02dc02211620022802d80241016ab32117024002402012450d0020162012b39420175d450d010b2012410174201241034920122012417f6a7141004772722100024002402017201695104a2217430000804f5d201743000000006071450d002017a921030c010b410021030b41022118024020002003200020034b1b22004101460d00024020002000417f6a710d00200021180c010b2000104b21180b024002400240201820022802d00222004b0d00201820004f0d02200041034921120240024020022802d802b320022a02dc0295104a2217430000804f5d201743000000006071450d002017a921030c010b410021030b0240024020120d0020006941014b0d002003410141202003417f6a676b7420034102491b21030c010b2003104b21030b20182003201820034b1b221820004f0d022018450d010b20184180808080044f0d0420184102741027210320022802cc022100200220033602cc0202402000450d00200010280b200220183602d0024100210020182103034020022802cc0220006a4100360200200041046a21002003417f6a22030d000b20022802d4022214450d01201428020421190240024020186941014b221a0d0020192018417f6a7121190c010b20192018490d00201920187021190b20022802cc0220194102746a200a3602002014280200220f450d012018417f6a211b0340200f280204210002400240201a0d002000201b7121000c010b20002018490d00200020187021000b0240024020002019470d00200f21140c010b02400240024020022802cc022000410274221c6a2203280200450d004100211d200f28020022120d01200f21030c020b20032014360200200f2114200021190c020b200f41086a2111200f210303402011201241086a41e000102a21122003280200210002402012450d002000211d0c020b20002103200028020022120d000b200021030b2014201d360200200320022802cc02201c6a28020028020036020020022802cc02201c6a280200200f3602000b2014280200220f0d000c020b0b20022802cc022100200241003602cc0202402000450d00200010280b200241003602d0020b024020022802d00222122012417f6a2200710d002000201071210f0c010b0240201020124f0d002010210f0c010b2010201270210f0b02400240024020022802cc02200f4102746a220328020022000d00201520022802d402360200200220153602d4022003200a36020020152802002200450d02200028020421000240024020122012417f6a2203710d00200020037121000c010b20002012490d00200020127021000b20022802cc0220004102746a21000c010b201520002802003602000b200020153602000b200220022802d80241016a3602d8020b2002412c6a2008412c6a280200200841256a20082d0024220041017122031b200841286a280200200041017620031b10600240200241ec016a2002412c6a10610d00410041b9ce0010000b41e00010272200200241ec016a41e00010041a20022008102f21032002200041e0006a22123602202002201236021c20022000360218200220082903103703102005200310621a024020022802182200450d002002200036021c200010280b024020032d0000410171450d00200228020810280b201320047c2104200841306a22082009470d010c020b0b1003000b02400240200420012903002213540d0020132004420188560d010b410041d4ce0010000b024020022802800322002002280284032203460d00034002402000411c6a280200200041186a2802006b41e000460d00410041a4d40010000b200041286a22002003470d000b0b2002412c6a200241f8026a10634200200228022c2200200228023020006b100c0240200228022c2200450d0020022000360230200010280b024020022802d4022200450d00034020002802002103200010282003210020030d000b0b20022802cc022100200241003602cc0202402000450d00200010280b024020072d0000410171450d00200728020810280b024020062d0000410171450d00200628020810280b200510641a20024190036a24000b5001027f230041206b2202240002402000280208200028020022036b41286d20014f0d0020002002410c6a2001200028020420036b41286d200041086a106522011066200110671a0b200241206a24000b990902047f027e230041a0016b220324000240410028029c59220441002d00985922054101762206200541017122051b2002490d00410041edd000100041002d0098592205410176210620054101712105410028029c5921040b0240200141002802a0594199d90020051b2004200620051b102a450d004100418dd10010000b20032002410028029c5941002d009859220541017620054101711b22056b3602142003200120056a3602102003200329021037030820034194016a200341086a41014101104c200341dc006a20032802980120032d009401220541017620054101711b2201103b200341e8006a41086a200341dc006a410041c6d1001038220241086a28020036020020032002290200370368410021050340200220056a4100360200200541046a2205410c470d000b200341f8006a41086a200341e8006a41d4d1001035220241086a28020036020020032002290200370378410021050340200220056a4100360200200541046a2205410c470d000b200341d0006a41e000103b20034188016a41086a200341f8006a2003280258200341d0006a41017220032d0050220541017122021b2003280254200541017620021b1034220241086a2802003602002003200229020037038801410021050340200220056a4100360200200541046a2205410c470d000b200341306a41086a20034188016a41f3d1001035220241086a28020036020020032002290200370330410021050340200220056a4100360200200541046a2205410c470d000b200341c4006a4104103a200341106a41086a200341306a200328024c200341c4006a41017220032d0044220541017122021b2003280248200541017620021b1034220241086a28020036020020032002290200370310410021050340200220056a4100360200200541046a2205410c470d000b0240200141e400460d0041002003280218200341106a41017220032d0010220541017122021b2003280214200541017620021b10160b024020032d0010410171450d00200328021810280b024020032d0044410171450d00200328024c10280b024020032d0030410171450d00200328023810280b024020032d008801410171450d0020032802900110280b024020032d0050410171450d00200328025810280b024020032d0078410171450d0020032802800110280b024020032d0068410171450d00200328027010280b024020032d005c410171450d00200328026410280b0240200328029c0120034194016a41017220032d009401220241017122011b2205200328029801200241017620011b6a417c6a22042005460d0020002005200420056b10021a0b200341106a200041e0001042200341306a2102200341106a21014102210003404200200141086a2903002207200041014622051b21082007422088200129030020051b21074103410f20051b21050340200220056a20073c000020074208882008423886842107200842088821082005417f6a2205417f470d000b200141106a2101200241106a21022000417f6a22000d000b02402004200341306a4104102a450d0041004180d20010000b024020032d009401410171450d00200328029c0110280b200341a0016a24000b990902047f027e230041a0016b22032400024041002802ac59220441002d00a85922054101762206200541017122051b2002490d00410041edd000100041002d00a859220541017621062005410171210541002802ac5921040b0240200141002802b05941a9d90020051b2004200620051b102a450d004100418dd10010000b2003200241002802ac5941002d00a859220541017620054101711b22056b3602142003200120056a3602102003200329021037030820034194016a200341086a41014101104c200341dc006a20032802980120032d009401220541017620054101711b2201103b200341e8006a41086a200341dc006a410041c6d1001038220241086a28020036020020032002290200370368410021050340200220056a4100360200200541046a2205410c470d000b200341f8006a41086a200341e8006a41d4d1001035220241086a28020036020020032002290200370378410021050340200220056a4100360200200541046a2205410c470d000b200341d0006a41c001103b20034188016a41086a200341f8006a2003280258200341d0006a41017220032d0050220541017122021b2003280254200541017620021b1034220241086a2802003602002003200229020037038801410021050340200220056a4100360200200541046a2205410c470d000b200341306a41086a20034188016a41f3d1001035220241086a28020036020020032002290200370330410021050340200220056a4100360200200541046a2205410c470d000b200341c4006a4104103a200341106a41086a200341306a200328024c200341c4006a41017220032d0044220541017122021b2003280248200541017620021b1034220241086a28020036020020032002290200370310410021050340200220056a4100360200200541046a2205410c470d000b0240200141c401460d0041002003280218200341106a41017220032d0010220541017122021b2003280214200541017620021b10160b024020032d0010410171450d00200328021810280b024020032d0044410171450d00200328024c10280b024020032d0030410171450d00200328023810280b024020032d008801410171450d0020032802900110280b024020032d0050410171450d00200328025810280b024020032d0078410171450d0020032802800110280b024020032d0068410171450d00200328027010280b024020032d005c410171450d00200328026410280b0240200328029c0120034194016a41017220032d009401220241017122011b2205200328029801200241017620011b6a417c6a22042005460d0020002005200420056b10021a0b200341106a200041c0011042200341306a2102200341106a21014102210003404200200141086a2903002207200041014622051b21082007422088200129030020051b21074103410f20051b21050340200220056a20073c000020074208882008423886842107200842088821082005417f6a2205417f470d000b200141106a2101200241106a21022000417f6a22000d000b02402004200341306a4104102a450d0041004180d20010000b024020032d009401410171450d00200328029c0110280b200341a0016a24000beb0101037f23004190096b2202240041002103200241d0076a410041c00110011a200241d0046a410041800310011a200241d0076a41002802d859220441002802dc5920046b10041a200241d0046a200141c00110041a200241d0076a41e0006a200041e00010041a200241e0003602cc04200220003602c804200220022902c804370300200241c8d900200241d0046a41c0016a1068200241086a410041c00410011a0240200241d0076a41c001200241d0046a4180034102200241086a41c004100d0d00200241086a41002802e859220041002802ec5920006b102a4521030b20024190096a240020030bcf0101067f230041206b22022400200041086a210302400240024020002802042204200028020822054f0d0020032004200110692000200028020441286a22033602040c010b2004200028020022066b41286d220741016a220441e7cc99334f0d0120032002410c6a200520066b41286d220541017422062004200620044b1b41e6cc9933200541b3e6cc19491b2007200310652204280208200110692004200428020841286a360208200020041066200410671a200028020421030b200241206a2400200341586a0f0b2000103f000b6f01027f230041106b22022400200041003602082000420037020020024108360204200241046a200141086a220310a2011a20002002280204107d2002200028020436020c20022000280200220036020820022000360204200241046a2001109a01200310a3011a200241106a24000b5501037f024020002802002201450d00200121020240200028020422032001460d00200041086a210203402002200341586a220310ac0120032001470d000b200028020021020b20002001360204200210280b20000b6701017f410021042000410036020c200041106a2003360200024002402001450d00200141e7cc99334f0d01200141286c102721040b2000200436020020002004200241286c6a220336020820002004200141286c6a36020c2000200336020420000f0b1003000b9e0101047f2001280204210202402000280204220320002802002204460d00200041086a210503402005200241586a200341586a220310692001200128020441586a220236020420032004470d000b200028020021040b2000200236020020012004360204200028020421032000200128020836020420012003360208200028020821032000200128020c3602082001200336020c200120012802043602000b1c01017f200010d401024020002802002201450d00200110280b20000be10301027f230041a0066b22032400200341a0046a418002200028020020002802042001280208200141016a20012d0000220041017122041b2001280204200041017620041b109d01410021010340200341c0016a20016a200341a0046a2001413f736a2d00003a0000200141016a220141c000470d000b200341e0036a200341c0016a41c00010041a200341e0036a41c00020034180036a413010181a200341a0046a41c0006a2100410021010340200341c0016a20016a20002001413f736a2d00003a0000200141016a220141c000470d000b200341e0036a200341c0016a41c00010041a200341e0036a41c00020034180036a41306a2204413010181a20034180036a41e000200341c0016a41c00110191a200341a0056a2100410021010340200320016a20002001413f736a2d00003a0000200141016a220141c000470d000b200341e0036a200341c00010041a200341e0036a41c00020034180036a413010181a200341e0056a2100410021010340200320016a20002001413f736a2d00003a0000200141016a220141c000470d000b200341e0036a200341c00010041a200341e0036a41c0002004413010181a20034180036a41e000200341c00110191a200341c0016a41c001200341c001200241c001101a1a200341a0066a24000b8f0101017f20012002290300370300200141086a200241086a280200360200410021030340200220036a4100360200200341046a2203410c470d000b200141003602182001411c6a220342003702002001200228021836021820032002411c6a280200360200200141206a200241206a22032802003602002001200229031037031020034100360200200242003703180b5001017f230041106b220224002000290300100b200241046a2001106b420120022802042200200228020820006b10101a024020022802042200450d0020022000360208200010280b200241106a24000b6501017f230041106b22022400200041003602082000420037020020024100360204200241046a200110ad011a20002002280204107d2002200028020436020c20022000280200220036020820022000360204200241046a200110ae011a200241106a24000b970102047f027e230041206b220224002000290300100b2002210341022104200121050340200541086a290300210620052903002107410f21000340200320006a20073c000020074208882006423886842107200642088821062000417f6a2200417f470d000b200541106a2105200341106a21032004417f6a22040d000b2002101141d5cf001012200141f0cf00106d200241206a24000b860103037f027e017f230041206b2202240020022103410221040340200041086a290300210520002903002106410f21070340200320076a20063c000020064208882005423886842106200542088821052007417f6a2207417f470d000b200041106a2100200341106a21032004417f6a22040d000b20024120101c20011012200241206a24000b8d0103037f027e017f230041206b2202240020022103410221040340200141086a290300210520012903002106410f21070340200320076a20063c000020064208882005423886842106200542088821052007417f6a2207417f470d000b200141106a2101200341106a21032004417f6a22040d000b0240200210130d00410041f2cf0010000b200241206a24000ba70101037f230041206b220221032002240002400240101422040d00410021020c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a0b20032002360218200320023602142003200220046a36021c20034200370308200341146a200341086a10701a20034200370300200341146a200310701a02402004418004490d002002450d00200210230b200341206a24000b4001017f02402000280208200028020422026b41074b0d00410041c0d4001000200028020421020b20012002410810041a2000200028020441086a36020420000b5701037f230022022103024010142204450d000240200441ff034b0d0020022004410f6a4170716b220224002002200410151a0c010b200410212202200410151a2004418004490d002002450d00200210230b200324000b5701037f230022022103024010142204450d000240200441ff034b0d0020022004410f6a4170716b220224002002200410151a0c010b200410212202200410151a2004418004490d002002450d00200210230b200324000b5701037f230022022103024010142204450d000240200441ff034b0d0020022004410f6a4170716b220224002002200410151a0c010b200410212202200410151a2004418004490d002002450d00200210230b200324000b5701037f230022022103024010142204450d000240200441ff034b0d0020022004410f6a4170716b220224002002200410151a0c010b200410212202200410151a2004418004490d002002450d00200210230b200324000bef0101047f230041c0006b220221032002240002400240101422040d00410021020c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a0b2003413c6a2205200220046a360200200320023602382003200236023420034200370328200341346a200341286a10701a200341346a200341276a10761a200341346a200341266a10761a200341186a20052802003602002003200329023437031020032001370308200320003703002003200329032820032d002720032d0026107702402004418004490d002002450d00200210230b200341c0006a24000b3d01017f0240200028020820002802042202470d00410041c0d4001000200028020421020b20012002410110041a2000200028020441016a36020420000b6602017f017e230041e0006b220424002000290300210520044200370358200420053703502004200137034820042001370300200441106a200141001078200410493703302004100a360238200441d0006a2001200441c8006a20041079200441e0006a24000b810201047f230041106b2203210420032400024020020d00200341406a2202220324000b200341406a22032400024020014100200341c000101b220541c100490d002001410020051021220341c000101b1a0b200441003602002004200341c0006a220636020c2004200336020820042003360204200441046a2004107c1a02402004280200450d00410041ead40010000b2004200636020c2004200336020820042003360204200441046a200210c5011a0240200541c100490d00200310230b20002002290310370300200041186a200241286a290300370300200041106a200241206a290300370300200041086a200241186a290300370300200441106a24000b4f01017f23004190026b220424002004410036028c022004410c6a20022903001096010240200020012004410c6a200428028c022003410010c601450d0041004194d00010000b20044190026a24000b9d0201047f230041d0006b220221032002240041002104024010142205450d00024002402005418004490d002005102121040c010b20022005410f6a4170716b220424000b2004200510151a0b20032004360248200320043602442003200420056a36024c20034200370338200341c4006a200341386a10701a200341003602342003420037022c200341c4006a2003412c6a107b1a0240200328024c2003280248460d00410041a6d500412e10160b200341206a200341cc006a280200360200200320032902443703182003200137031020032000370308200341086a20032903382003412c6a105b0240200328022c2202450d0020032002360230200210280b02402005418004490d002004450d00200410230b200341d0006a24000b7701037f230041106b220224002002410036020c20002002410c6a107c1a2001200228020c107d02402000280208200028020422036b2001280204200128020022046b22014f0d00410041c0d4001000200028020421030b20042003200110041a2000200028020420016a360204200241106a240020000b7401047f2000280204210241002103410021040340024020022000280208490d00410041a2d5001000200028020421020b20022c000021052000200241016a2202360204200541ff0071200441ff01712204742003722103200441076a21042002210220054100480d000b2001200336020020000b3a01027f024020012000280204200028020022026b22034d0d002000200120036b10a4010f0b0240200120034f0d002000200220016a3602040b0bdc0103037f017e017f230041206b220221032002240002400240101422040d00410021020c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a0b20032002360218200320023602142003200220046a36021c20034200370308200341146a200341086a10701a200341146a200341076a10761a0240200328021c2003280218460d00410041a6d500412e10160b2003290308210520032d000721062000100b20052006410047100e02402004418004490d002002450d00200210230b200341206a24000b830202037f047e230041306b220221032002240002400240101422040d00410021020c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a0b20032002360228200320023602242003200220046a36022c20034200370318200341246a200341186a10701a200341246a200341106a1080011a200341246a200341086a1080011a200341246a20031080011a0240200328022c2003280228460d00410041a6d500412e10160b200329030021052003290308210620032903102107200329031821082000100b2008200720062005100f02402004418004490d002002450d00200210230b200341306a24000b4001017f02402000280208200028020422026b41074b0d00410041c0d4001000200028020421020b20012002410810041a2000200028020441086a36020420000bf30101047f230041c0006b220221032002240041002104024010142205450d00024002402005418004490d002005102121040c010b20022005410f6a4170716b220424000b2004200510151a0b20032004360238200320043602342003200420056a36023c2003410036023020034200370228200341346a200341286a1082011a0240200328023c2003280238460d00410041a6d500412e10160b200341206a2003413c6a280200360200200320032902343703182003200137031020032000370308200341086a200341286a106a200341286a1083011a02402005418004490d002004450d00200410230b200341c0006a24000b7601027f230041106b220224002002410036020020002002107c1a2001200228020010840102402001280200220320012802042201460d00034020022000360204200220033602082002200341086a36020c200241086a200241046a108501200341206a22032001470d000b0b200241106a240020000b1b0002402000280200450d00200010d501200028020010280b20000b8c0101037f0240200120002802042202200028020022036b41057522044d0d002000200120046b10df010f0b0240200120044f0d0002402002200320014105746a2203460d002002416c6a2101034002402001410c6a2204280200417f460d00200110d6011a0b2004417f360200200141746a2104200141606a210120042003470d000b0b200020033602040b0b4c01017f230041106b220224002001280200200028020010701a20002802042100200128020021012002410036020c20012002410c6a107c1a20012000200228020c10e501200241106a24000bcd0101047f230041306b220221032002240041002104024010142205450d00024002402005418004490d002005102121040c010b20022005410f6a4170716b220424000b2004200510151a0b20032004360218200320043602142003200420056a36021c2003410036021020034200370208200341146a200341086a1087011a0240200328021c2003280218460d00410041a6d500412e10160b2000100b200341206a200341086a1046200341086a1088011a02402005418004490d002004450d00200410230b200341306a24000b7701027f230041106b220224002002410036020020002002107c1a2001200228020010890102402001280200220320012802042201460d00034020022000360204200220033602082002200341086a36020c200241086a200241046a108a01200341c0006a22032001470d000b0b200241106a240020000b1b0002402000280200450d002000108002200028020010280b20000bb00101047f230041106b2202240002400240200120002802042203200028020022046b41067522054d0d002000200120056b1081020c010b200120054f0d0002402003200420014106746a2204460d00200341486a210103400240200141306a22052802002203417f460d002002410f6a2001200341027441d8d5006a2802001102000b2005417f360200200141786a2105200141406a210120052004470d000b0b200020043602040b200241106a24000b4c01017f230041106b220224002001280200200028020010701a20002802042100200128020021012002410036020c20012002410c6a107c1a20012000200228020c10f501200241106a24000b8b0201047f230041d0006b220221032002240041002104024010142205450d00024002402005418004490d002005102121040c010b20022005410f6a4170716b220424000b2004200510151a0b20032004360248200320043602442003200420056a36024c200341386a41003602002003420037033020034200370328200341c4006a200341286a1070200341286a41086a2202108c011a0240200328024c2003280248460d00410041a6d500412e10160b200341206a200341c4006a41086a280200360200200320032902443703182003200137031020032000370308200341086a200341286a105d2002108d011a02402005418004490d002004450d00200410230b200341d0006a24000b5c01027f230041106b220224002002410036020c20002002410c6a107c1a2001200228020c10c90102402001280200220320012802042201460d0003402000200310ca011a200341306a22032001470d000b0b200241106a240020000b5501037f024020002802002201450d00200121020240200028020422032001460d00200041086a210203402002200341506a220310cc0120032001470d000b200028020021020b20002001360204200210280b20000bb80101037f230041e0006b220221032002240002400240101422040d00410021020c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a0b20032002360258200320023602542003200220046a36025c200341d4006a200341086a108f011a0240200328025c2003280258460d00410041a6d500412e10160b2000100b200341086a104402402004418004490d002002450d00200210230b200341e0006a24000b920100200020011070200141086a1090012001410c6a109001200141106a109001200141146a109001200141186a1090012001411c6a109001200141206a109001200141246a109001200141286a1090012001412c6a109001200141306a109101200141326a109101200141346a109001200141386a1090012001413c6a109001200141c0006a109001200141c4006a1090010b4001017f02402000280208200028020422026b41034b0d00410041c0d4001000200028020421020b20012002410410041a2000200028020441046a36020420000b4001017f02402000280208200028020422026b41014b0d00410041c0d4001000200028020421020b20012002410210041a2000200028020441026a36020420000bb70101037f230041206b220221032002240002400240101422040d00410021020c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a0b20032002360218200320023602142003200220046a36021c20034200370308200341146a200341086a10701a0240200328021c2003280218460d00410041a6d500412e10160b2003290308100b02402004418004490d002002450d00200210230b200341206a24000bb80201057f230041c0006b2202210320022400024002400240101422040d00200341186a4200370300200341106a4200370300200342003703082003420037030041002102200421050c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a200341186a4200370300200341106a42003703002003420037030820034200370300200220046a21052004411f4b0d010b410041c0d40010000b200341206a2002412010041a200341206a200341206a41206a2003109401200241206a2106024020044120460d00410041a6d500412e10160b200341386a2005360200200341346a2006360200200320023602302003200137032820032000370320200341206a2003106c02402004418004490d002002450d00200210230b200341c0006a24000be20104017f017e017f027e230041106b22032400024020002001460d0042002104411021054200210603400240024020054102490d00200642088620044238888421062005417f6a2105200420003100008442088621040c010b024020054101460d00410041bad60010000b20003100002107200220063703082002200420078437030041102105200241106a210242002104420021060b200041016a22002001470d000b20054110460d00200320042006200541037441786a4100200541014b1b102b2002200341086a290300370308200220032903003703000b200341106a24000bfa0101037f230041c0006b2202210320022400024002400240101422040d00200341186a4200370300200341106a42003703002003420037030820034200370300410021020c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a200341186a4200370300200341106a420037030020034200370308200342003703002004411f4b0d010b410041c0d40010000b200341206a2002412010041a200341206a200341206a41206a2003109401024020044120460d00410041a6d500412e10160b20032003106e02402004418004490d002002450d00200210230b200341c0006a24000b6201027f0240200028028002220241086a418102490d00410041a5d000100020002802800221020b200020026a2103410721020340200320026a20013c0000200142088821012002417f6a2202417f470d000b200020002802800241086a360280020b5001017f23004190026b22062400200641046a200410980141a68203200120022003200628028802200628028c0220051017210402402006280284022205450d00200510290b20064190026a240020040ba10203057f027e017f230041206b220224002002210341022104200141106a220521060340200641086a290300210720062903002108410f21090340200320096a20083c000020084208882007423886842108200742088821072009417f6a2209417f470d000b200641106a2106200341106a21032004417f6a22040d000b20022103410221060340200541086a290300210720052903002108410f21090340200320096a20083c000020084208882007423886842108200742088821072009417f6a2209417f470d000b200541106a2105200341106a21032006417f6a22060d000b2000413436028802200041003602800220002000360284022002200041346a3602082002200036020420022000360200200220011099011a200241206a24000bda0102057f027e230041206b22022400200141106a210320002001109a01210420022105410221060340200341086a290300210720032903002108410f21000340200520006a20083c000020084208882007423886842108200742088821072000417f6a2200417f470d000b200341106a2103200541106a21052006417f6a22060d000b02402004280208200428020422006b411f4a0d00410041c2d0001000200428020421000b20002002412010041a2004200428020441206a3602042004200141306a109b01200141386a109c012100200241206a240020000b4001017f02402000280208200028020422026b41074a0d00410041c2d0001000200028020421020b20022001410810041a2000200028020441086a36020420000b4001017f02402000280208200028020422026b41074a0d00410041c2d0001000200028020421020b20022001410810041a2000200028020441086a36020420000b4001017f02402000280208200028020422026b41034a0d00410041c2d0001000200028020421020b20022001410410041a2000200028020441046a36020420000bb00401047f23004180036b220624000240200141e03f4b0d00200541ff014a0d00200641c0026a410041c00010011a200620053a00bf02200641003a00be02200620013a00bd02200620014108763a00bc0220064188026a42abb38ffc91a3b3f0db0037030020064180026a42ffa4b988c591da829b7f370300200641f8016a42f2e6bbe3a3a7fda7a57f370300200642e7cca7d0d6d0ebb3bb7f3703f001200642003703e801200641003602e001200641a0016a200641c0026a41c000109e01200641a0016a20022003109e01200641a0016a200641bc026a4103109e01200641a0016a20042005109e01200641a0016a200641bc026a41036a22074101109e01200641a0016a20064190026a109f01200641f0006a4100412110011a2001411f6a22034120490d0020034105762108200041606a2109410121000340410021030340200641f0006a20036a220220022d000020064190026a20036a2d0000733a0000200341016a22034120470d000b200620003a009001200642abb38ffc91a3b3f0db00370368200642ffa4b988c591da829b7f370360200642f2e6bbe3a3a7fda7a57f370358200642e7cca7d0d6d0ebb3bb7f37035020064200370348200641003602402006200641f0006a4121109e01200620042005109e01200620074101109e012006200641f0006a109f012009200041057422036a200641f0006a200120036b2203411f7520037141206a10041a20002008462103200041016a21002003450d000b0b20064180036a24000b6f01027f02402002450d0020002802402103034020012d000021042000200341016a360240200020036a20043a000002402000280240220341c000470d00200010a0014100210320004100360240200020002903484280047c3703480b200141016a21012002417f6a22020d000b0b0b5b01037f200010a101200041d0006a2102410021030340411820034103746b2104410021000340200120006a200220006a2802002004763a0000200041046a22004120470d000b200141016a2101200341016a22034104470d000b0bbe04010c7f230041a0026b2201240041002102410021030340200141206a20026a2000200341ff017122046a280000220341187420034180fe03714108747220034108764180fe037120034118767272360200200441046a2103200241046a220241c000470d000b41002102200128022021050340200141206a20026a220341c0006a200341386a2802002204410f772004410d77732004410a7673200341246a2802006a20056a200341046a28020022034119772003410e77732003410376736a36020020032105200241046a220241c001470d000b200041d0006a2102410021030340200120036a200220036a280200360200200341046a22034120470d000b41002104200128020c2106200128021c210720012802182105200128021421032001280210210820012802082109200128020421022001280200210a03402005210b200321052009220c2002220972200a220271200c200971722002411e772002411377732002410a77736a200b20082203417f7371200520037172200141206a20046a2802006a2003411a772003411577732003410777736a200441a4d2006a2802006a20076a22086a210a200820066a2108200b2107200c2106200441046a2204418002470d000b2001200b36021c20012005360218200120033602142001200836021020012009360208200120023602042001200a3602002001200c36020c200041d0006a2104410021030340200420036a22022002280200200120036a2802006a360200200341046a22034120470d000b200141a0026a24000bea0102027f027e2000200028024022016a22024180013a000002402001ad220342017c423842c00020014138491b22045a0d00200241016a21012003427f8520047c21030340200141003a0000200141016a21012003427f7c22034200520d000b0b0240200028024022014138490d00200010a00120004100413810011a200028024021010b200020002903482001410374ad7c22033c003f20002003370348200020034208883c003e200020034210883c003d200020034218883c003c200020034220883c003b200020034228883c003a200020034230883c0039200020034238883c0038200010a0010b6b03027f017e017f20012802042202200128020022036b41286dad2104200028020021010340200141016a2101200442ff005621052004420788210420050d000b20002001360200024020032002460d0003402000200310a6011a200341286a22032002470d000b0b20000b5f01027f230041106b220224002002200128020420012802006b41286d36020c20002002410c6a10a8011a02402001280200220320012802042201460d0003402000200310a9011a200341286a22032001470d000b0b200241106a240020000ba30201067f230041206b2202240002400240024020002802082203200028020422046b2001490d000340200441003a00002000200028020441016a22043602042001417f6a22010d000c020b0b2004200028020022056b220620016a2207417f4c0d012002411c6a200041086a360200410021040240200320056b220341017422052007200520074b1b41ffffffff07200341ffffffff03491b2203450d002003102721040b2002200436020c2002200420036a3602182002200420066a22043602100340200441003a0000200441016a21042001417f6a22010d000b2002200436021420002002410c6a10a5010240200228021420022802102201460d00200220013602140b200228020c2201450d00200110280b200241206a24000f0b2000103f000b890101037f200120012802042000280204200028020022026b22036b2204360204024020034101480d0020042002200310041a200128020421040b200028020021032000200436020020012003360204200028020421042000200128020836020420012004360208200028020821042000200128020c3602082001200436020c200120012802043602000b5802027f017e2000200110a70122022802002001411c6a28020022006a200128021822036b41086a2101200020036bad21040340200141016a2101200442ff005621002004420788210420000d000b2002200136020020020b7403017f017e017f200128020420012d0000220241017620024101711bad2103200028020021020340200241016a2102200342ff005621042003420788210320040d000b200020023602000240200128020420012d0000220441017620044101711b2204450d002000200420026a3602000b20000b860102027f017e230041106b220224002000280204210320013502002104034020022004a741ff0071200442ff00562201410774723a000f0240200028020820036b41004a0d00410041c2d0001000200028020421030b2004420788210420032002410f6a410110041a2000200028020441016a220336020420010d000b200241106a240020000b19002000200110aa01200141106a109a01200141186a10ab010ba30101037f230041106b220224002002200128020420012d0000220341017620034101711b36020c20002002410c6a10a8011a0240200128020420012d00002203410176200341017122041b2203450d002001280208200141016a20041b210402402000280208200028020422016b20034e0d00410041c2d0001000200028020421010b20012004200310041a2000200028020420036a3602040b200241106a240020000b7801037f230041106b220224002002200128020420012802006b36020c20002002410c6a10a8011a02402000280208200028020422036b2001280204200128020022046b22014e0d00410041c2d0001000200028020421030b20032004200110041a2000200028020420016a360204200241106a240020000b3401017f024020012802182202450d002001411c6a2002360200200210280b024020012d0000410171450d00200128020810280b0b960103037f017e017f230041106b2202240020012802042203200128020022046b410575ad2105200028020021010340200141016a2101200542ff005621062005420788210520060d000b20002001360200024020042003460d0003402000200028020041086a3602002002200036020c200441086a2002410c6a410110b001200441206a22042003470d000b0b200241106a240020000b7501027f230041106b220224002002200128020420012802006b4105753602082000200241086a10a8011a02402001280200220320012802042201460d0003402002200036020c20002003109a011a200341086a2002410c6a410110af01200341206a22032001470d000b0b200241106a240020000b5401017f230041106b22032400200128020021012003200028021036020c20012003410c6a10a8011a02402000280210417f470d0010b101000b20012000109c011a2001200041046a10ba011a200341106a24000b6503027f017e017f20012802002203280200210120002802102204ad21050340200141016a2101200542ff005621062005420788210520060d000b2003200136020002402004417f470d0010b101000b2003200141046a3602002003200041046a10b2011a0b05001003000b980103037f017e017f230041106b2202240020012802042203200128020022046b41386dad2105200028020021010340200141016a2101200542ff005621062005420788210520060d000b20002001360200024020042003460d0003402002200036020c20042002410c6a410110b301200228020c2201200128020041026a360200200441386a22042003470d000b0b200241106a240020000b8c0103037f017e017f230041106b2203240020012802002204280200210120002802302205ad21060340200141016a2101200642ff005621072006420788210620070d000b200420013602002003200436020802402005417f470d0010b101000b200541027441dcc2006a28020021012003200341086a36020c2003410c6a20002001110200200341106a24000b170020002802002802002200200028020041216a3602000b170020002802002802002200200028020041216a3602000b220020002802002802002200200028020041226a3602002000200141246a10a7011a0b170020002802002802002200200028020041216a3602000b170020002802002802002200200028020041206a3602000b20002000280200280200220041e100410120012802001b20002802006a3602000b7801027f230041106b220224002002200128020420012802006b41386d3602082000200241086a10a8011a02402001280200220320012802042201460d0003402002200036020c20032002410c6a410110bb01200228020c200341346a10bc011a200341386a22032001470d000b0b200241106a240020000b6f01017f230041106b2203240020012802002101200320002802303602082001200341086a10a8011a20032001360204024020002802302201417f470d0010b101000b2001410274418cc3006a28020021012003200341046a36020c2003410c6a20002001110200200341106a24000b4001017f02402000280208200028020422026b41014a0d00410041c2d0001000200028020421020b20022001410210041a2000200028020441026a36020420000b2c01017f200028020028020021024100210003402002200120006a10be011a200041016a22004121470d000b0b4001017f02402000280208200028020422026b41004a0d00410041c2d0001000200028020421020b20022001410110041a2000200028020441016a36020420000b2c01017f200028020028020021024100210003402002200120006a10be011a200041016a22004121470d000b0b3f01017f200028020028020021024100210003402002200120006a10be011a200041016a22004121470d000b2002200141216a10c101200141246a10aa011a0b4001017f02402000280208200028020422026b41004a0d00410041c2d0001000200028020421020b20022001410110041a2000200028020441016a36020420000b2c01017f200028020028020021024100210003402002200120006a10be011a200041016a22004121470d000b0b2c01017f200028020028020021024100210003402002200120006a10be011a200041016a22004120470d000b0b6201027f230041106b220224004100210320002802002802002100200220012802004100473a000f20002002410f6a10be011a024020012802002201450d0003402000200120036a10be011a200341016a220341e000470d000b0b200241106a24000bbd0101027f230041c0006b22022400024020002001107c200141086a10702200280208200028020422036b411f4b0d00410041c0d4001000200028020421030b200241206a2003412010041a2000200028020441206a360204200241206a200241206a41206a2002109401200141286a200241186a290300370300200141206a200241106a290300370300200141186a2002290308370300200120022903003703102000200141306a1076200141316a10762101200241c0006a240020010b5001017f23004190026b22062400200641046a200410c70141aaff00200120022003200628028802200628028c0220051017210402402006280284022205450d00200510290b20064190026a240020040ba10203057f027e017f230041206b220224002002210341022104200141106a220521060340200641086a290300210720062903002108410f21090340200320096a20083c000020084208882007423886842108200742088821072009417f6a2209417f470d000b200641106a2106200341106a21032004417f6a22040d000b20022103410221060340200541086a290300210720052903002108410f21090340200320096a20083c000020084208882007423886842108200742088821072009417f6a2209417f470d000b200541106a2105200341106a21032006417f6a22060d000b2000413436028802200041003602800220002000360284022002200041346a36020820022000360204200220003602002002200110c8011a200241206a24000bda0102057f027e230041206b22022400200141106a210320002001109a01210420022105410221060340200341086a290300210720032903002108410f21000340200520006a20083c000020084208882007423886842108200742088821072000417f6a2200417f470d000b200341106a2103200541106a21052006417f6a22060d000b02402004280208200428020422006b411f4a0d00410041c2d0001000200428020421000b20002002412010041a2004200428020441206a3602042004200141306a109b01200141386a109c012100200241206a240020000b6b01037f0240200120002802042202200028020022036b41306d22044d0d002000200120046b10cb010f0b0240200120044f0d00024020022003200141306c6a2201460d00200041086a210403402004200241506a220210cc0120022001470d000b0b200020013602040b0b20002000200110cd01200141106a1070200141186a10cd01200141246a10cd010bf20101067f230041206b22022400200041086a210302400240024020002802082204200028020422056b41306d2001490d0003402003200510ce012000200028020441306a22053602042001417f6a22010d000c020b0b2005200028020022066b41306d220720016a220541d6aad52a4f0d012002410c6a200420066b41306d220441017422062005200620054b1b41d5aad52a200441aad5aa15491b2007200310cf0122052802082103200541106a280200210403402004200310ce012005200528020841306a22033602082001417f6a22010d000b2000200510d001200510d1011a0b200241206a24000f0b2000103f000b4700024020012d0024410171450d002001412c6a28020010280b024020012d0018410171450d00200141206a28020010280b024020012d0000410171450d00200128020810280b0ba90401067f230041206b220224002002410036021c200242003702142000200241146a107b1a0240024002402002280218220320022802142204460d00200241106a410036020020024200370308200320046b220541704f0d02024002402005410a4b0d00200220054101743a0008200241086a41017221060c010b2005410f72220741016a102721062002200536020c2002200741026a360208200220063602100b0340200620042d00003a0000200641016a2106200441016a22042003470d000b200641003a0000024020012d0000410171450d00200128020841003a00002001410036020420012d0000410171450d00200128020810280b20012002290308370200200141086a200241086a41086a280200360200410021040340200241086a20046a4100360200200441046a2204410c470d000b20022d0008410171450d01200228021010280c010b200241106a410036020020024200370308410021040340200241086a20046a4100360200200441046a2204410c470d000b024020012d0000410171450d00200128020841003a00002001410036020420012d0000410171450d00200128020810280b20012002290308370200200141086a200241086a41086a280200360200410021040340200241086a20046a4100360200200441046a2204410c470d000b20022d0008410171450d00200228021010280b024020022802142204450d0020022004360218200410280b200241206a240020000f0b200241086a102e000ba30101027f20014200370300200141086a4200370300410021020340200120026a4100360200200241046a2202410c470d000b2001420037031820014200370310200141206a4100360200200141186a2103410021020340200320026a4100360200200241046a2202410c470d000b200142003702242001412c6a4100360200200141246a2101410021020340200120026a4100360200200241046a2202410c470d000b0b6701017f410021042000410036020c200041106a2003360200024002402001450d00200141d6aad52a4f0d01200141306c102721040b2000200436020020002004200241306c6a220336020820002004200141306c6a36020c2000200336020420000f0b1003000b9f0101047f2001280204210202402000280204220320002802002204460d00200041086a210503402005200241506a200341506a220310d2012001200128020441506a220236020420032004470d000b200028020021040b2000200236020020012004360204200028020421032000200128020836020420012003360208200028020821032000200128020c3602082001200336020c200120012802043602000b1c01017f200010d301024020002802002201450d00200110280b20000bc10101027f20012002290300370300200141086a200241086a280200360200410021030340200220036a4100360200200341046a2203410c470d000b2001200229031037031020012002290318370318200141206a200241206a280200360200200241186a2104410021030340200420036a4100360200200341046a2203410c470d000b200120022902243702242001412c6a2002412c6a280200360200200241246a2102410021030340200220036a4100360200200341046a2203410c470d000b0b3d01027f02402000280208220120002802042202460d0003402000200141506a22013602082000280210200110cc01200028020822012002470d000b0b0b3d01027f02402000280208220120002802042202460d0003402000200141586a22013602082000280210200110ac01200028020822012002470d000b0b0b5d01037f02402000280204220120002802002202460d002001416c6a2101034002402001410c6a2203280200417f460d00200110d6011a0b2003417f360200200141746a2103200141606a210120032002470d000b0b200020023602040b1b0002402000280200450d00200010d701200028020010280b20000b7d01057f230041106b2201240002402000280204220220002802002203460d00200241486a210203400240200241306a22042802002205417f460d002001410f6a2002200541027441d8d5006a2802001102000b2004417f36020020022003472104200241486a210220040d000b0b20002003360204200141106a24000b02000b02000b1a00024020012d0024410171450d002001412c6a28020010280b0b02000b02000b0800200110de011a0b3701027f024020002802042201450d00200120012802042202417f6a36020420020d00200120012802002802081101002001103d0b20000b9e0201057f230041206b2202240002400240024020002802082203200028020422046b4105752001490d00034020044200370300200441186a4200370300200441106a4200370300200441086a42003703002000200028020441206a22043602042001417f6a22010d000c020b0b2004200028020022056b410575220620016a220441808080c0004f0d012002410c6a200320056b220341047522052004200520044b1b41ffffff3f200341e0ffffff07491b2006200041086a10e00122032802082104034020044200370300200441186a4200370300200441106a4200370300200441086a4200370300200441206a21042001417f6a22010d000b200320043602082000200310e101200310e2011a0b200241206a24000f0b2000103f000b6801017f410021042000410036020c200041106a2003360200024002402001450d00200141808080c0004f0d012001410574102721040b200020043602002000200420024105746a22033602082000200420014105746a36020c2000200336020420000f0b1003000bab0101047f2001280204210202402000280204220320002802002204460d000340200241606a200341606a2205290300370300200241686a200341686a10e3011a2001200128020441606a22023602042005210320052004470d000b200028020021040b2000200236020020012004360204200028020421022000200128020836020420012002360208200028020821022000200128020c3602082001200236020c200120012802043602000b2101017f2000200028020410e401024020002802002201450d00200110280b20000b7e01027f2000417f360210200041003a0000024020012802102202417f460d0020004100360204200041086a22034200370200200020012802043602042003200141086a2802003602002000410c6a2001410c6a2203280200360200200020012802003602002000200236021020034100360200200142003702040b20000b5601037f0240200028020822022001460d0003402000200241606a22033602080240200341186a2204280200417f460d002002416c6a10d6011a200028020821030b2004417f3602002003210220032001470d000b0b0b960101017f230041106b220324000240024020020d002003410c6a410036020020034200370204200020031090011a2000200341046a220210e6011a02402001280210417f460d00200141046a10d6011a0b2001200329020037020020014100360210200141086a20032902083702002003410036020420034200370208200210d6011a0c010b410041a4d60010000b200341106a24000b7601027f230041106b220224002002410036020020002002107c1a2001200228020010e70102402001280200220320012802042201460d00034020022000360204200220033602082002200341346a36020c200241086a200241046a10e801200341386a22032001470d000b0b200241106a240020000bad0101047f230041106b2202240002400240200120002802042203200028020022046b41386d22054d0d002000200120056b10e9010c010b200120054f0d00024020032004200141386c6a2204460d00200341486a210103400240200141306a22052802002203417f460d002002410f6a2001200341027441d8d5006a2802001102000b2005417f36020020012004472105200141486a210120050d000b0b200020043602040b200241106a24000b4d01037f230041106b2202240020002802002103200128020021042002410036020c20042002410c6a107c1a20042003200228020c10f501200128020020002802041091011a200241106a24000be40101057f230041206b2202240002400240024020002802082203200028020422046b41386d2001490d00034020044100413810011a2000200028020441386a22043602042001417f6a22010d000c020b0b2004200028020022056b41386d220620016a220441a592c9244f0d012002410c6a200320056b41386d220341017422052004200520044b1b41a492c92420034192c9a412491b2006200041086a10ea01220328020821040340200441004138100141386a21042001417f6a22010d000b200320043602082000200310eb01200310ec011a0b200241206a24000f0b2000103f000b6701017f410021042000410036020c200041106a2003360200024002402001450d00200141a592c9244f0d01200141386c102721040b2000200436020020002004200241386c6a220336020820002004200141386c6a36020c2000200336020420000f0b1003000b6d01017f200041086a20002802002000280204200141046a10ed01200028020021022000200128020436020020012002360204200028020421022000200128020836020420012002360208200028020821022000200128020c3602082001200236020c200120012802043602000b1c01017f200010ee01024020002802002201450d00200110280b20000baf0101067f230041106b22042400024020022001460d00200241486a2102200328020021050340200541486a220641003a0000200641306a2207417f3602000240200241306a22082802002209417f460d002004410f6a20062002200941027441f0d5006a280200110300200720082802003602000b2005417c6a200241346a2f01003b01002003200328020041486a220536020020022001472106200241486a210220060d000b0b200441106a24000b7701057f230041106b2201240002402000280208220220002802042203460d0003402000200241486a22023602080240200241306a22042802002205417f460d002001410f6a2002200541027441d8d5006a280200110200200028020821020b2004417f36020020022003470d000b0b200141106a24000b0b0020012002412110041a0b0b0020012002412110041a0b480020012002412210042201412c6a2002412c6a28020036020020012002290224370224200241246a2101410021020340200120026a4100360200200241046a2202410c470d000b0b0b0020012002412110041a0b3c0020012002290200370200200141186a200241186a290200370200200141106a200241106a290200370200200141086a200241086a2902003702000b130020012002290200370200200242003702000b7f01017f230041306b220324000240024020020d0041002102034020002003410e6a20026a10761a200241016a22024121470d000b024020012802302202417f460d002003412f6a2001200241027441d8d5006a2802001102000b20012003410e6a4121100441003602300c010b20002001200210f6010b200341306a24000b820101017f230041306b220324000240024020024101470d0041002102034020002003410e6a20026a10761a200241016a22024121470d000b024020012802302202417f460d002003412f6a2001200241027441d8d5006a2802001102000b20012003410e6a4121100441013602300c010b20002001200210f7010b200341306a24000ba00201027f230041c0006b220324000240024020024102470d00200341386a410036020020034200370230412421022003410c6a41246a210403402003410c6a20026a4100360200200241046a22024130470d000b41002102034020002003410c6a20026a10761a200241016a22024121470d000b20002003412d6a10f801200410cd011a024020012802302202417f460d002003413f6a2001200241027441d8d5006a2802001102000b20012003410c6a412210042200412c6a200441086a280200360200200020042902003702244124210203402003410c6a20026a4100360200200241046a22024130470d000b2000410236023020032d0030410171450d01200341386a28020010280c010b20002001200210f9010b200341c0006a24000b3d01017f0240200028020820002802042202470d00410041c0d4001000200028020421020b20012002410110041a2000200028020441016a36020420000b820101017f230041306b220324000240024020024103470d0041002102034020002003410e6a20026a10761a200241016a22024121470d000b024020012802302202417f460d002003412f6a2001200241027441d8d5006a2802001102000b20012003410e6a4121100441033602300c010b20002001200210fa010b200341306a24000bbc0101017f230041306b220324000240024020024104470d0041002102034020002003410f6a20026a10761a200241016a22024120470d000b024020012802302202417f460d002003412f6a2001200241027441d8d5006a2802001102000b2001200329000f37000020014104360230200141186a2003410f6a41186a290000370000200141106a2003410f6a41106a290000370000200141086a2003410f6a41086a2900003700000c010b20002001200210fb010b200341306a24000b840101017f230041106b220324000240024020024105470d00200342003702042000200341046a10fc011a024020012802302202417f460d002003410f6a2001200241027441d8d5006a2802001102000b200120032902043702002001410536023020034200370204200341046a10de011a0c010b410041a4d60010000b200341106a24000be30102037f017e230041106b220224002000200241086a10761a0240024020022d0008450d000240200128020022030d0041ec00102722034190d600360200200342003702042003410c6a410041e000100121042001290200210520012004360200200120033602042002420037020020022005370208200241086a10de011a200210de011a200128020021030b4100210103402000200320016a10761a200141016a220141e000470d000c020b0b20012902002105200142003702002002420037020020022005370208200241086a10de011a200210de011a0b200241106a240020000b08002000103c10280b02000b0600200010280b800101057f230041106b2201240002402000280204220220002802002203460d00200241486a210203400240200241306a22042802002205417f460d002001410f6a2002200541027441d8d5006a2802001102000b2004417f360200200241786a2104200241406a210220042003470d000b0b20002003360204200141106a24000be60101057f230041206b2202240002400240024020002802082203200028020422046b4106752001490d0003402004410041c00010011a2000200028020441c0006a22043602042001417f6a22010d000c020b0b2004200028020022056b410675220620016a220441808080204f0d012002410c6a200320056b220341057522052004200520044b1b41ffffff1f200341c0ffffff07491b2006200041086a1082022203280208210403402004410041c000100141c0006a21042001417f6a22010d000b200320043602082000200310830220031084021a0b200241206a24000f0b2000103f000b6701017f410021042000410036020c200041106a2003360200024002402001450d00200141808080204f0d012001410674102721040b200020043602002000200420024106746a22033602082000200420014106746a36020c2000200336020420000f0b1003000b6d01017f200041086a20002802002000280204200141046a108502200028020021022000200128020436020020012002360204200028020421022000200128020836020420012002360208200028020821022000200128020c3602082001200236020c200120012802043602000b1c01017f2000108602024020002802002201450d00200110280b20000bb10101057f230041106b22042400024020022001460d00200241406a2102200328020021050340200541406a22052002290300370300200541386a2206417f360200200541086a220541003a00000240200241386a22072802002208417f460d002004410f6a2005200241086a200841027441f0d5006a280200110300200620072802003602000b2003200328020041406a220536020020022001472106200241406a210220060d000b0b200441106a24000b7e01067f230041106b2201240002402000280208220220002802042203460d0003402000200241406a22043602080240200441386a22052802002206417f460d002001410f6a200241486a200641027441d8d5006a280200110200200028020821040b2005417f3602002004210220042003470d000b0b200141106a24000bab040020001043024020012000520d00024002400240024002400240024002400240200242ffffff95cdebd4d942550d000240200242fffffffffff698d942550d0002402002428fa9d9d9dd8c99d6ba7f550d00200242808080e8b2edc0d38b7f510d032002428080f9d4a98499dc9a7f520d0a20012001106f0f0b20024290a9d9d9dd8c99d6ba7f510d0320024280808080daac9bd6ba7f520d09200120011092010f0b0240200242ffffffffd3c4a2d942550d002002428080808080f798d942510d042002428080b8f6a4979ad942520d0920012001107f0f0b20024280808080d4c4a2d942510d04200242f0aadf8bcde9add942520d0820012001108b010f0b0240200242ffffacd68db8baf154550d000240200242ffdfde8293fad6d942550d0020024280808096cdebd4d942510d0620024280808080b6f7d6d942520d0920012001107e0f0b20024280e0de8293fad6d942510d06200242808080c093fad6d942520d08200120011081010f0b0240200242ffffffcfb2b3bb9932550d002002428080add68db8baf154510d072002428080add68d959ba955520d082001200110710f0b02402002428080add68d95abd1ca00510d00200242808080d0b2b3bb9932520d08200120011093010f0b2001200110720f0b2001200110730f0b200120011095010f0b20012001107a0f0b2001200110750f0b20012001108e010f0b200120011086010f0b2001200110740f0b2001428080808080c0bad847510d0041004201101d0b0b0d00101e2000200120021087020b0b971706004180c0000b4a6661696c656420746f20616c6c6f6361746520706167657300656e636f756e7465726564206e6f6e2d62617365363420636861726163746572005055425f424c535f00000000000000000041cac0000bdf0200000000000030303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839396461746173747265616d20617474656d7074656420746f20777269746520706173742074686520656e6400000100000002000000030000000400000005000000060000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000700000008000000090000000a0000000b0000000c00000000000000000041a9c3000b81080000000000000000000000020000000300000005000000070000000b0000000d0000001100000013000000170000001d0000001f00000025000000290000002b0000002f000000350000003b0000003d0000004300000047000000490000004f00000053000000590000006100000065000000670000006b0000006d000000710000007f00000083000000890000008b00000095000000970000009d000000a3000000a7000000ad000000b3000000b5000000bf000000c1000000c5000000c7000000d3000000010000000b0000000d0000001100000013000000170000001d0000001f00000025000000290000002b0000002f000000350000003b0000003d0000004300000047000000490000004f00000053000000590000006100000065000000670000006b0000006d00000071000000790000007f00000083000000890000008b0000008f00000095000000970000009d000000a3000000a7000000a9000000ad000000b3000000b5000000bb000000bf000000c1000000c5000000c7000000d1000000404040404040404040404040404040404040404040404040404040404040404040404040404040404040403e4040403f3435363738393a3b3c3d40404040404040000102030405060708090a0b0c0d0e0f101112131415161718194040404040401a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040403e40403435363738393a3b3c3d40404040404040000102030405060708090a0b0c0d0e0f10111213141516171819404040403f401a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132334040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404077726f6e6720656e636f64656420737472696e672073697a65005349475f424c535f00424c535f5349475f424c53313233383147325f584d443a5348412d3235365f535357555f524f5f4e554c5f00424c535f504f505f424c53313233383147325f584d443a5348412d3235365f535357555f524f5f504f505f0041aacb000b820800bbc622db0af03afbef1a7af93fe8556c58ac1b173f3a4ea105b974974f8c68c30faca94f8c63952694d79731a7d3f117cac239b9d6dc54ad1b75cb0eba386f4e3642accad5b95566c907b51def6a8167f2212ecfc8767daaa845d555681d4d116e756d626572206f662066696e616c697a657273206578636565647320746865206d6178696d756d20616c6c6f7765640072657175697265206174206c65617374206f6e652066696e616c697a6572005055425f424c53005349475f424c530046696e616c697a6572206465736372697074696f6e2067726561746572207468616e206d617820616c6c6f7765642073697a65007075626c6963206b65792073686f756c642073746172742077697468205055425f424c530070726f6f66206f6620706f7373657373696f6e207369676e61747572652073686f756c642073746172742077697468205349475f424c530073756d206f662077656967687473206361757365732075696e7436345f74206f766572666c6f77006475706c6963617465207075626c6963206b65790070726f6f66206f6620706f7373657373696f6e206661696c65640066696e616c697a657220706f6c696379207468726573686f6c64206d7573742062652067726561746572207468616e2068616c66206f66207468652073756d206f662074686520776569676874732c20616e64206c657373207468616e206f7220657175616c20746f207468652073756d206f66207468652077656967687473006665617475726520646967657374206163746976617465643a20000a0070726f746f636f6c2066656174757265206973206e6f7420616374697661746564004b5620777269746520726566757365640062655f6b65795f73747265616d3a206b657920746f6f206c61726765006461746173747265616d20617474656d7074656420746f20777269746520706173742074686520656e6400656e636f64656420626173653634206b657920697320746f6f2073686f72740062617365363420656e636f6465642074797065206d75737420626567696e2066726f6d20636f72726573706f6e64696e6720707265666978006465636f6465642073697a65200020646f65736e2774206d61746368207374727563747572652073697a652000202b20636865636b73756d2000636865636b73756d206f662073747275637475726520646f65736e2774206d6174636800982f8a4291443771cffbc0b5a5dbb5e95bc25639f111f159a4823f92d55e1cab98aa07d8015b8312be853124c37d0c55745dbe72feb1de80a706dc9b74f19bc1c1699be48647beefc69dc10fcca10c246f2ce92daa84744adca9b05cda88f97652513e986dc631a8c82703b0c77f59bff30be0c64791a7d55163ca0667292914850ab72738211b2e0041acd3000bba03fc6d2c4d130d385354730a65bb0a6a762ec9c281852c7292a1e8bfa24b661aa8708b4bc2a3516cc719e892d1240699d685350ef470a06a1016c1a419086c371e4c774827b5bcb034b30c1c394aaad84e4fca9c5bf36f2e68ee828f746f63a5781478c8840802c78cfaffbe90eb6c50a4f7a3f9bef27871c67075626c6963206b65792068617320612077726f6e672073697a65006461746173747265616d20617474656d7074656420746f207265616420706173742074686520656e640048797065727669736f722072657475726e656420756e657870656374656420636f64652068617368207374727563742076657273696f6e0067657400616374696f6e206461746120686173206279746573206c6566742061667465722074686520617267756d656e747300000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e00000000000000000000001f00000020000000210000002200000023000000696e76616c69642076617269616e7420696e64657800756e6578706563746564206572726f7220696e2066697865645f627974657320636f6e7374727563746f72000041000b04002d0000000000000000000001d00f01a9c902001da8598d87ce1542e3195caf898b7a57a37786088063509192cd832d660226b00300000002000000010000000305fdee1bb22e7184e00096ba290ef81298fb4ac18449cdc73e493329010000000000eab0c78869060000000000000000000000 +DMLOG CREATION_OP ROOT 0 +DMLOG RAM_OP 0 sysio abi update setabi sysio 423998 599 +DMLOG KV_OP INS 0 sysio sysio 49446 c7b0ea0000000000 0000000000eab0c7566925165a2f89de22ab6583ab6394367a07f47179c829eb4f20678ed601dce840a21bba992a060003000000 +DMLOG RAM_OP 0 sysio:49446:c7b0ea0000000000 table_row add primary_index_add sysio 424170 172 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":2,"value_ex":260174,"consumed":44958},"cpu_usage":{"last_ordinal":2,"value_ex":24307,"consumed":4101},"ram_usage":424170} +DMLOG APPLIED_TRANSACTION 3 96384705b7045007580a31c7c99bc27b5d86a0bc3add3402cd837ee3c95965d10300000002000000010000000305fdee1bb22e7184e00096ba290ef81298fb4ac18449cdc73e4933290101d00fd00f0000000000000000f50a00000000000001010000010000000000eab0c7988a32a7670b7d3a59ab376daaa68e6c37b0590ecd7ab963681917742a65d09404000000000000000400000000000000010000000000eab0c7040000000000000001010000000000eab0c70000000000eab0c700000000b863b2c2010000000000eab0c700000000a8ed3232f0140000000000eab0c7e6140e737973696f3a3a6162692f312e320117626c6f636b5f7369676e696e675f617574686f726974792276617269616e745f626c6f636b5f7369676e696e675f617574686f726974795f76301e086162695f686173680004056f776e6572046e616d6504686173680b636865636b73756d3235360a757064617465645f61740a74696d655f706f696e7409626c6f636b5f6e756d0675696e7433320b616269686173685f6b65790001056f776e65720675696e74363408616374697661746500010e666561747572655f6469676573740b636865636b73756d32353609617574686f726974790003097468726573686f6c640675696e743332046b6579730c6b65795f7765696768745b5d086163636f756e7473197065726d697373696f6e5f6c6576656c5f7765696768745b5d1a626c6f636b5f7369676e696e675f617574686f726974795f76300002097468726573686f6c640675696e743332046b6579730c6b65795f7765696768745b5d15626c6f636b636861696e5f706172616d65746572730012136d61785f626c6f636b5f6e65745f75736167650675696e7436341a7461726765745f626c6f636b5f6e65745f75736167655f7063740675696e743332196d61785f7472616e73616374696f6e5f6e65745f75736167650675696e743332106e65745f75736167655f6c65657761790675696e743332136d61785f626c6f636b5f6370755f75736167650675696e7433321a7461726765745f626c6f636b5f6370755f75736167655f7063740675696e743332196d61785f7472616e73616374696f6e5f6370755f75736167650675696e743332196d696e5f7472616e73616374696f6e5f6370755f75736167650675696e743332186d61785f7472616e73616374696f6e5f6c69666574696d650675696e743332156d61785f7472616e73616374696f6e5f64656c61790675696e743332166d61785f696e6c696e655f616374696f6e5f73697a650675696e743332176d61785f696e6c696e655f616374696f6e5f64657074680675696e743136136d61785f617574686f726974795f64657074680675696e7431361c6d61785f616374696f6e5f72657475726e5f76616c75655f73697a650675696e7433320f6d61785f6b765f6b65795f73697a650675696e743332116d61785f6b765f76616c75655f73697a650675696e743332196d61785f6b765f7365636f6e646172795f6b65795f73697a650675696e743332126e6f746966795f6370755f73746970656e640675696e74333209636f64655f686173680004056f776e6572046e616d6504686173680b636865636b73756d3235360a757064617465645f61740a74696d655f706f696e7409626c6f636b5f6e756d0675696e7433320c636f6465686173685f6b65790001056f776e65720675696e7436340a64656c657465617574680002076163636f756e74046e616d650a7065726d697373696f6e046e616d651366696e616c697a65725f617574686f7269747900040b6465736372697074696f6e06737472696e67067765696768740675696e7436340a7075626c69635f6b657906737472696e6703706f7006737472696e671066696e616c697a65725f706f6c6963790002097468726573686f6c640675696e7436340a66696e616c697a6572731566696e616c697a65725f617574686f726974795b5d0a6b65795f7765696768740002036b65790a7075626c69635f6b6579067765696768740675696e743136086c696e6b617574680004076163636f756e74046e616d6504636f6465046e616d650474797065046e616d650b726571756972656d656e74046e616d650a6e65776163636f756e7400040763726561746f72046e616d65046e616d65046e616d65056f776e657209617574686f726974790661637469766509617574686f72697479107065726d697373696f6e5f6c6576656c0002056163746f72046e616d650a7065726d697373696f6e046e616d65177065726d697373696f6e5f6c6576656c5f77656967687400020a7065726d697373696f6e107065726d697373696f6e5f6c6576656c067765696768740675696e7431361270726f64756365725f617574686f7269747900020d70726f64756365725f6e616d65046e616d6509617574686f7269747917626c6f636b5f7369676e696e675f617574686f726974790c70726f64756365725f6b657900020d70726f64756365725f6e616d65046e616d6511626c6f636b5f7369676e696e675f6b65790a7075626c69635f6b65790c72657161637469766174656400010e666561747572655f6469676573740b636865636b73756d323536077265716175746800010466726f6d046e616d65067365746162690002076163636f756e74046e616d65036162690562797465730a736574616c696d6974730004076163636f756e74046e616d650972616d5f627974657305696e7436340a6e65745f77656967687405696e7436340a6370755f77656967687405696e74363407736574636f64650004076163636f756e74046e616d6506766d747970650575696e743809766d76657273696f6e0575696e743804636f64650562797465730c73657466696e616c697a657200011066696e616c697a65725f706f6c6963791066696e616c697a65725f706f6c69637909736574706172616d73000106706172616d7315626c6f636b636861696e5f706172616d657465727307736574707269760002076163636f756e74046e616d650769735f707269760575696e74380b73657470726f646b6579730001087363686564756c650e70726f64756365725f6b65795b5d0873657470726f64730001087363686564756c651470726f64756365725f617574686f726974795b5d0a756e6c696e6b617574680003076163636f756e74046e616d6504636f6465046e616d650474797065046e616d650a757064617465617574680004076163636f756e74046e616d650a7065726d697373696f6e046e616d6506706172656e74046e616d65046175746809617574686f72697479100000002a9bed3232086163746976617465000040cbdaa8aca24a0a64656c65746561757468000000002d6b03a78b086c696e6b617574680000409e9a2264b89a0a6e65776163636f756e7400905436db6564acba0c72657161637469766174656400000000a0656dacba07726571617574680000000000b863b2c206736574616269000000ce4eba68b2c20a736574616c696d6974730000000040258ab2c207736574636f64650070d577d14cb7b2c20c73657466696e616c697a6572000000c0d25c53b3c209736574706172616d730000000060bb5bb3c207736574707269760000b05730d15bb3c20b73657470726f646b6579730000000038d15bb3c20873657470726f6473000040cbdac0e9e2d40a756e6c696e6b61757468000040cbdaa86c52d50a75706461746561757468000207616269686173680369363401056f776e6572010675696e743634086162695f6861736826c10008636f6465686173680369363401056f776e6572010675696e74363409636f64655f68617368aa3f00000000012276617269616e745f626c6f636b5f7369676e696e675f617574686f726974795f7630011a626c6f636b5f7369676e696e675f617574686f726974795f7630000000000000000000000001d00f01f5150096384705b7045007580a31c7c99bc27b5d86a0bc3add3402cd837ee3c95965d10300000002000000010000000305fdee1bb22e7184e00096ba290ef81298fb4ac18449cdc73e493329010000000000eab0c70303000000000000000000000000 +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":2,"value_ex":0,"consumed":0},"average_block_cpu_usage":{"last_ordinal":2,"value_ex":833334,"consumed":100},"pending_net_usage":44958,"pending_cpu_usage":4100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1049625,"virtual_cpu_limit":200200} +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":3,"value_ex":374650000,"consumed":44958},"average_block_cpu_usage":{"last_ordinal":3,"value_ex":34993056,"consumed":4101},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1050675,"virtual_cpu_limit":200400} +DMLOG ACCEPTED_BLOCK_V2 0000000305fdee1bb22e7184e00096ba290ef81298fb4ac18449cdc73e493329 3 1 020000000000000000eab0c70000000261e1e9fd247d62d5d0659aec25d2501fb9a24d489439cce4a807c56a02601c2c3f08326bef7fa9099623110a51a09253b78f8f44f5b634607301f70000000000000000000000000000000000000000000000000000000000000000000100000000000000010020a9d0a5d366cb9d1a90e457bfdc92330aaa268b23c5cabed4b99d78b93bc39db472ae0225a86aa1d9f6929c9b9e1ef9c51c054dbdb6dc9b9d7a05afd696c038ff0201d00f01002005aa807b94dda5b25edde36830fdc124d9825138eed80de1d0a950712e8c17c9306a2c727f15e4cf8926d43b3333602a90db98b0635c0ced28bb2d0e256ff3fc0000d7c802868574670200247d62d500000000010000000000eab0c700000040258ab2c2010000000000eab0c700000000a8ed3232a3c8020000000000eab0c7000096c8020061736d0100000001e1012160000060017f0060027f7f0060037f7f7f0060037f7f7f017f60027f7f017e6000017e6000017f60017e0060037e7f7f0060077f7f7f7f7f7f7f017f60027e7f0060047e7e7e7e0060037e7f7f017e60017f017f60027f7f017f60077f7e7f7f7f7f7f017f60047f7f7f7f017f60067f7f7f7f7f7f017f60047e7f7f7f017f60027f7e0060047f7e7e7f0060057f7f7f7f7f017f60087f7f7f7f7f7f7f7f0060077f7f7f7f7f7f7f0060017d017d60047f7f7f7f0060037f7e7f0060047f7e7f7f0060027e7e0060067f7e7f7f7f7f017f60067f7f7f7f7f7f0060037e7e7e0002df041e03656e760c737973696f5f617373657274000203656e76066d656d736574000403656e76076d656d6d6f7665000403656e760561626f7274000003656e76066d656d637079000403656e7606736861323536000303656e7609726970656d64313630000303656e76207365745f626c6f636b636861696e5f706172616d65746572735f7061636b6564000203656e76167365745f70726f706f7365645f70726f647563657273000503656e760c63757272656e745f74696d65000603656e760d6765745f626c6f636b5f6e756d000703656e760c726571756972655f61757468000803656e760e7365745f66696e616c697a657273000903656e760b626c735f70616972696e67000a03656e760e7365745f70726976696c65676564000b03656e76137365745f7265736f757263655f6c696d697473000c03656e76197365745f70726f706f7365645f70726f6475636572735f6578000d03656e761370726561637469766174655f66656174757265000103656e76067072696e7473000103656e761469735f666561747572655f616374697661746564000e03656e7610616374696f6e5f646174615f73697a65000703656e7610726561645f616374696f6e5f64617461000f03656e7614737973696f5f6173736572745f6d657373616765000303656e76066b765f736574001003656e760a626c735f66705f6d6f64001103656e760a626c735f67325f6d6170001103656e760a626c735f67325f616464001203656e760d6765745f636f64655f68617368001303656e76087072696e74686578000203656e7611737973696f5f6173736572745f636f6465001403ed01eb010001010e0f0100040e0e010104150f0f010f16171802040f0211040402020e010f01030f0308010f02020206190e1a000f0100010001000100020100011b1c020203030f0f020e11020e030302020202021d0f1d1d1d1d1d0f1c1b1c1d0f0f021d1d0f1d0f0e02021d0f0e02021d0f0e1d0f0f0f1d1d031d141e020f0f0f0f1f030201010f0f02020f0f0f0f0f0f020f0f0303000f030202020202020f030f020f02020f0202020f1e020f020f02020f0211020e030101010e010202020202020e0211020e0f02030f02020211020e1a010303030303030303030f0303030f010101010211020e1a0120200405017001242405030100010616037f014180c0000b7f0041f8d9000b7f004180da000b072e04066d656d6f727902000a5f5f646174615f656e6403010b5f5f686561705f626173650302056170706c790088020944010041010b23b401b501b601b701b801b901bd01bf01c001c201c301c4014f515355585ad801d901da01db01dc01dd01ef01f001f101f201f301f4013cfd01fe013eff010aa0a702eb0110001024104d105010521054105610590b0900200041013602000b0900200041003602000b7201037f024020000d0041000f0b410041002802f456200041107622016a22023602f456410041002802ec56220320006a410f6a41707122003602ec560240200241107420004b0d004100200241016a3602f456200141016a21010b024020014000417f470d0041004180c00010000b20030b8a0101037f0240200120006c22000d0041000f0b410041002802f456200041107622026a22033602f456410041002802ec56220120006a410f6a41707122043602ec560240200341107420044b0d004100200341016a3602f456200241016a21020b024020024000417f470d0041004180c00010000b024020010d0041000f0b20014100200010011a20010b02000b3601017f230041106b2200410036020c4100200028020c280200410f6a41707122003602e856410020003602ec5641003f003602f4560b990101037f41f8d600101f024041002802805722030d004188d700210341004188d700360280570b0240024041002802845722044120470d0002404184024101102222030d00417f21050c020b41002104200341002802805736020041002003360280570b410021054100200441016a36028457200320044102746a22034184016a2001360200200341046a20003602000b41f8d600102020050bcc0101037f20002101024002402000410371450d00024020002d00000d00200020006b0f0b200041016a2201410371450d0020012d0000450d01200041026a2201410371450d0020012d0000450d01200041036a2201410371450d0020012d0000450d01200041046a22014103710d010b2001417c6a21022001417b6a21010340200141046a2101200241046a22022802002203417f73200341fffdfb776a7141808182847871450d000b0340200141016a210120022d00002103200241016a210220030d000b0b200120006b0b3601027f20004101200041014b1b2101024003402001102122000d0141002100410028028c592202450d0120021100000c000b0b20000b0600200010230b0600200010280b4901037f4100210302402002450d000240034020002d0000220420012d00002205470d01200141016a2101200041016a21002002417f6a22020d000c020b0b200420056b21030b20030b6a01017e4200210402400240200341ff004d0d00420021020c010b024020030d00200121040c010b02402003413f4b0d00200141c00020036bad8820022003ad220486842102200120048621040c010b2001200341406aad8621020b20002002370308200020043703000bf90101027f0240200041ffc1d72f4b0d0020012000102d0f0b200020004180c2d72f6e22024180c2d72f6c6b210302400240200041ff93ebdc034b0d00200120024130723a0000410121000c010b410221002001200241017441d0c0006a410210041a0b200120006a220020034190ce006e220141ffff037141e4006e220241017441d0c0006a410210041a200041026a2001200241e4006c6b41017441feff037141d0c0006a410210041a200041046a200320014190ce006c6b220141ffff037141e4006e220341017441d0c0006a410210041a200041066a2001200341e4006c6b41017441feff037141d0c0006a410210041a200041086a0bda0301027f02402001418fce004b0d000240200141e3004b0d000240200141094b0d00200020014130723a0000200041016a0f0b2000200141017441d0c0006a410210041a200041026a0f0b200141ffff0371220241e4006e21030240200141e7074b0d00200020034130723a0000200041016a200241e4007041017441d0c0006a410210041a200041036a0f0b2000200341017441d0c0006a410210041a200041026a2001200341e4006c6b41017441feff037141d0c0006a410210041a200041046a0f0b20014190ce006e210302400240200141bf843d4b0d0002402001419f8d064b0d00200020034130723a0000410121020c020b410221022000200341017441d0c0006a410210041a0c010b0240200141fface2044b0d002000200341ffff037141e4006e22024130723a0000200041016a2003200241e4006c6b41017441feff037141d0c0006a410210041a410321020c010b2000200141c0843d6e41017441d0c0006a410210041a200041026a200341e4007041017441d0c0006a410210041a410421020b200020026a2200200120034190ce006c6b220141ffff037141e4006e220341017441d0c0006a410210041a200041026a2001200341e4006c6b41017441feff037141d0c0006a410210041a200041046a0b05001003000bbb0101037f20004200370200200041086a22024100360200024020012d00004101710d00200020012902003702002002200141086a28020036020020000f0b02402001280204220241704f0d00200128020821030240024002402002410b490d002002410f72220441016a10272101200020023602042000200441026a360200200020013602080c010b200020024101743a0000200041016a21012002450d010b20012003200210041a0b200120026a41003a000020000f0b1003000bc50101047f20004200370200200041086a41003602000240200128020420012d00002205410176200541017122061b22052002490d00200520026b2205200320052003491b220341704f0d00200128020821070240024002402003410b490d002003410f72220841016a10272105200020033602042000200841026a360200200020053602080c010b200020034101743a0000200041016a21052003450d010b20052007200141016a20061b20026a200310041a0b200520036a41003a000020000f0b1003000bfc0101047f0240416e20016b2002490d00200041016a210820002d000041017121092000280208210a416f210b0240200141e6ffffff074b0d00410b200220016a22022001410174220b2002200b4b1b2202410f7241016a2002410b491b210b0b200a200820091b2108200b1027210202402004450d0020022008200410041a0b02402006450d00200220046a2007200610041a0b2003200520046a220a6b210902402003200a460d00200220046a20066a200820046a20056a200910041a0b02402001410a460d00200810280b200020023602082000200b4101723602002000200620046a20096a2204360204200220046a41003a00000f0b1003000bcb0101047f416f21070240416f20016b2002490d00200041016a210820002d000041017121092000280208210a0240200141e6ffffff074b0d00410b200220016a220720014101742202200720024b1b2207410f7241016a2007410b491b21070b200a200820091b210820071027210202402004450d0020022008200410041a0b02402003200520046a2209460d00200220046a20066a200820046a20056a200320096b10041a0b02402001410a460d00200810280b20002002360208200020074101723602000f0b1003000b820201067f0240200141704f0d00024020002d0000220220002802002203417e71417f6a2000280204200341017641ff007120034101711b22032001200320014b1b2201410f72220446712002410171452001410a4b22021b0d000240024020020d0041012102200041016a210520002802082106200321070c010b200441016a10272105200028020420002d00002202410176200241017122021b21072000280208200041016a20021b21060b0240200741016a2207450d0020052006200710041a0b02402002450d00200610280b02402001410b490d0020002005360208200020033602042000200441026a3602000f0b200020034101743a00000b0f0b1003000bb20101037f0240024020002802002203417e71417f6a410a20002d00004101711b22042000280204200341017641ff0071200341017122051b22036b2002490d002002450d012000280208200041016a20051b220420036a2001200210041a200320026a21020240024020002d0000410171450d00200020023602040c010b200020024101743a00000b200420026a41003a000020000f0b20002004200220046b20036a2003200341002002200110310b20000bb80101047f2001102621020240024020002802002203417e71417f6a410a20002d00004101711b22042000280204200341017641ff0071200341017122051b22036b2002490d002002450d012000280208200041016a20051b220420036a2001200210041a200320026a21020240024020002d0000410171450d00200020023602040c010b200020024101743a00000b200420026a41003a000020000f0b20002004200220046b20036a2003200341002002200110310b20000ba20101037f0240024002400240024020002d000022024101710d00410a2103410a210420024114460d01200241017621030c020b200028020422032000280200417e71417f6a2204470d020b2000200441012004200441004100103220002d00004101710d010b2000200341017441026a3a0000200041016a21000c010b2000200341016a360204200028020821000b200020036a220041003a0001200020013a00000bf80101037f0240200028020420002d00002204410176200441017122051b22042001490d000240024020002802002206417e71417f6a410a20051b220520046b2003490d002003450d012000280208200041016a20064101711b2105024020042001460d00200520016a220620036a2006200420016b10021a200220034100200520046a20024b1b4100200620024d1b6a21020b200520016a2002200310021a200420036a21030240024020002d0000410171450d00200020033602040c010b200020034101743a00000b200520036a41003a000020000f0b20002005200420036a20056b2004200141002003200210310b20000f0b1003000b0e002000200120022002102610370baa0101057f0240200028020420002d00002203410176200341017122041b22052001490d0002402002450d00200520016b2206200220062002491b21072000280208200041016a20041b21040240200620024d0d00200420016a2202200220076a200620076b10021a20002d000021030b200520076b2102024002402003410171450d00200020023602040c010b200020024101743a00000b200420026a41003a00000b20000f0b1003000b900201047f230041106b220224002001200241056a102c2103200041086a41003602002000420037020002402003200241056a6b220441704f0d00024002402004410a4b0d00200020044101743a0000200041016a21010c010b2004410f72220541016a10272101200020043602042000200541026a360200200020013602080b0240200241056a2003460d0002400240200441077122040d00200241056a21000c010b200241056a21000340200120002d00003a0000200141016a2101200041016a21002004417f6a22040d000b0b200241056a20036b41784b0d00034020012000290000370000200141086a2101200041086a22002003470d000b0b200141003a0000200241106a24000f0b1003000b900201047f230041106b220224002001200241056a102c2103200041086a41003602002000420037020002402003200241056a6b220441704f0d00024002402004410a4b0d00200020044101743a0000200041016a21010c010b2004410f72220541016a10272101200020043602042000200541026a360200200020013602080b0240200241056a2003460d0002400240200441077122040d00200241056a21000c010b200241056a21000340200120002d00003a0000200141016a2101200041016a21002004417f6a22040d000b0b200241056a20036b41784b0d00034020012000290000370000200141086a2101200041086a22002003470d000b0b200141003a0000200241106a24000f0b1003000b040020000b2801017f0240200028020822010d00200020002802002802101101000f0b20002001417f6a3602080b040041000b05001003000b2301017f230041206b2203240020012002200310052000200310411a200341206a24000bbd0301057e200131000f2102200131000e2103200131000d2104200020013100002205423886200542108620013100014208868420013100028442108620013100034208868420013100048442108620013100054208868420013100068422064208862205428080808080e0ffff008384200542808080f8ff1f838420054280feff0783842006421086200131000742088684200131000884421086200131000942088684200131000a84421086200131000b42088684200131000c8442108622054238888437030820002002200320052004420886848442088684370300200131001f2102200131001e2103200131001d2104200041186a20013100102205423886200542108620013100114208868420013100128442108620013100134208868420013100148442108620013100154208868420013100168422064208862205428080808080e0ffff008384200542808080f8ff1f838420054280feff0783842006421086200131001742088684200131001884421086200131001942088684200131001a84421086200131001b42088684200131001c844210862205423888843703002000200220032005200442088684844208868437031020000bed0102017f017e230041206b220324002001200220031006200020033100014208862003310000421086842003310002844228862003310005420886200331000684200331000342188620033100044210868484420886842003310009420886200331000a842003310007421886200331000842108684844220862204423888843703082000200331000d420886200331000e842004200331000b421886200331000c421086848484420886200331000f84370300200041186a200331001142088620033100104210868420033100128442288620033100134220868437030020004200370310200341206a24000b0a0041002000370390590b5101017f230041e0006b220124002001200141d8006a36020c2001200141106a3602082001200141106a360204200141046a200010451a200141106a200128020820012802046b1007200141e0006a24000bdc0801027f02402000280208200028020422026b41074a0d0041004198c2001000200028020421020b20022001410810041a2000200028020441086a2202360204200141086a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a22023602042001410c6a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141106a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141146a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141186a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a22023602042001411c6a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141206a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141246a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141286a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a22023602042001412c6a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141306a21030240200028020820026b41014a0d0041004198c2001000200028020421020b20022003410210041a2000200028020441026a2202360204200141326a21030240200028020820026b41014a0d0041004198c2001000200028020421020b20022003410210041a2000200028020441026a2202360204200141346a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141386a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a22023602042001413c6a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a2202360204200141c0006a21030240200028020820026b41034a0d0041004198c2001000200028020421020b20022003410410041a2000200028020441046a22023602040240200028020820026b41034a0d0041004198c2001000200028020421020b2002200141c4006a410410041a2000200028020441046a36020420000b7402017f017e230041106b22022400200241046a200110470240024020022802042201200228020820016b100822034200530d0020002003370300410121010c010b41002101200041003a00000b200020013a0008024020022802042200450d0020022000360208200010280b200241106a24000baa0403047f017e027f230041206b2202240041002103200041003602082000420037020020012802042204200128020022056b410675ad21060340200341016a2103200642ff005621072006420788210620070d000b2002200336021402400240024020052004470d0041002107410021050c010b0340200228021441086a2107200541386a2802002208ad21060340200741016a2107200642ff005621032006420788210620030d000b200220073602142002200241146a3602182008417f460d02200841027441c4c2006a28020021072002200241186a360208200241086a200541086a2007110200200541c0006a22052004470d000b2000280200210720002802042105200228021421030b024002402003200520076b22084d0d002000200320086b10a40120002802002107200028020421050c010b200320084f0d002000200720036a22053602040b2002200736020c2002200736020820022007200520076b6a360210200128020420012802006b410675ad2106034020022006a741ff0071200642ff00562203410774723a00180240200228021020076b41004a0d0041004198c20010000b200642078821062007200241186a410110041a2002200228020c41016a220736020c20030d000b02402001280200220720012802042203460d0003402002200241086a360214200220073602182002200741086a36021c200241186a200241146a1048200741c0006a22072003470d000b0b200241206a24000f0b10b101000b930202047f017e230041106b2202240020002802002103024020012802002204280208200428020422056b41074a0d0041004198c2001000200428020421050b20052003410810041a2004200428020441086a360204200028020422053502302106200128020022042802042101034020022006a741ff0071200642ff00562200410774723a000b0240200428020820016b41004a0d0041004198c2001000200428020421010b2006420788210620012002410b6a410110041a2004200428020441016a220136020420000d000b20022004360204024020052802302204417f470d0010b101000b200441027441f4c2006a28020021042002200241046a36020c2002410c6a20052004110200200241106a24000b040010090b930101047f230041106b210102402000bc220241177641ff017122034195014b0d000240200341ff00490d0041ffffff03200341817f6a2203762204200271450d0120012000430000807b9238020c4100200420024100481b20026a418080807c20037571be0f0b20012000430000807b923802080240200241004e0d0043000000800f0b430000803f200020021b21000b20000bfb0e01067f02400240200041d3014b0d004130210141b0c300210203402002200141017622034102746a220441046a2002200428020020004922041b210220012003417f736a200320041b22010d000b200228020021020c010b02402000417c4f0d002000200041d2016e220541d2016c22066b21004130210141f0c400210203402002200141017622034102746a220441046a2002200428020020004922041b210220012003417f736a200320041b22010d000b200241f0c4006b41027521000340200041027441f0c4006a28020020066a210241d87e2101024003402002200141ecc4006a28020022036e22042003490d042002200420036c460d012002200141f0c4006a28020022036e22042003490d042002200420036c460d01200141086a22010d000b41a303210103402002200141b07e6a22036e22042003490d042002200420036c460d012002200141ba7e6a22046e22062003410a6a2203490d042002200620046c460d012002200141bc7e6a22046e2206200341026a2203490d042002200620046c460d012002200141c07e6a22046e2206200341046a2203490d042002200620046c460d012002200141c27e6a22046e2206200341026a2203490d042002200620046c460d012002200141c67e6a22046e2206200341046a2203490d042002200620046c460d012002200141cc7e6a22046e2206200341066a2203490d042002200620046c460d012002200141ce7e6a22046e2206200341026a2203490d042002200620046c460d012002200141d47e6a22046e2206200341066a2203490d042002200620046c460d012002200141d87e6a22046e2206200341046a2203490d042002200620046c460d012002200141da7e6a22046e2206200341026a2203490d042002200620046c460d012002200141de7e6a22046e2206200341046a2203490d042002200620046c460d012002200141e47e6a22046e2206200341066a2203490d042002200620046c460d012002200141ea7e6a22046e2206200341066a2203490d042002200620046c460d012002200141ec7e6a22046e2206200341026a2203490d042002200620046c460d012002200141f27e6a22046e2206200341066a2203490d042002200620046c460d012002200141f67e6a22046e2206200341046a2203490d042002200620046c460d012002200141f87e6a22046e2206200341026a2203490d042002200620046c460d012002200141fe7e6a22046e2206200341066a2203490d042002200620046c460d012002200141827f6a22046e2206200341046a2203490d042002200620046c460d012002200141887f6a22046e2206200341066a2203490d042002200620046c460d012002200141907f6a22046e2206200341086a2203490d042002200620046c460d012002200141947f6a22046e2206200341046a2203490d042002200620046c460d012002200141967f6a22046e2206200341026a2203490d042002200620046c460d0120022001419a7f6a22046e2206200341046a2203490d042002200620046c460d0120022001419c7f6a22046e2206200341026a2203490d042002200620046c460d012002200141a07f6a22046e2206200341046a2203490d042002200620046c460d012002200141a87f6a22046e2206200341086a2203490d042002200620046c460d012002200141ae7f6a22046e2206200341066a2203490d042002200620046c460d012002200141b27f6a22046e2206200341046a2203490d042002200620046c460d012002200141b87f6a22046e2206200341066a2203490d042002200620046c460d012002200141ba7f6a22046e2206200341026a2203490d042002200620046c460d012002200141be7f6a22046e2206200341046a2203490d042002200620046c460d012002200141446a22046e2206200341066a2203490d042002200620046c460d012002200141466a22046e2206200341026a2203490d042002200620046c460d0120022001414c6a22046e2206200341066a2203490d042002200620046c460d012002200141526a22046e2206200341066a2203490d042002200620046c460d012002200141566a22046e2206200341046a2203490d042002200620046c460d012002200141586a22046e2206200341026a2203490d042002200620046c460d0120022001415c6a22046e2206200341046a2203490d042002200620046c460d012002200141626a22046e2206200341066a2203490d042002200620046c460d012002200141646a22046e2206200341026a2203490d042002200620046c460d0120022001416a6a22046e2206200341066a2203490d042002200620046c460d0120022001416e6a22046e2206200341046a2203490d042002200620046c460d012002200141706a22046e2206200341026a2203490d042002200620046c460d012002200141746a22046e2206200341046a2203490d042002200620046c460d012002200141766a22046e2206200341026a2203490d042002200620046c460d01200220016e22042003410a6a490d04200420016c2103200141d2016a210120022003470d000b0b4100200041016a2202200241304622021b2100200520026a220541d2016c21060c000b0b1003000b20020bc20801097f230041206b220424000240024002400240200128020422050d0020004200370200200041086a41003602000c010b02402002450d00200441186a410036020020044200370310200541704f0d0220012802002102024002402005410b490d002005410f72220641016a10272101200420053602142004200641026a360210200420013602180c010b200420054101743a0010200441106a41017221010b20012002200510041a200120056a41003a000020042802182207200441106a410172220820042d0010220141017122021b2206200428021422092001410176220a20021b220b6a210c2006210102400240200b450d00200b210520062101034020012d0000410a460d01200141016a21012005417f6a22050d000b200c21010c010b2001200c460d00200141016a2205200c460d002006200b6a220220016b417e6a210b024020022001417f736a4103712202450d000340024020052d00002206410a460d00200120063a0000200141016a21010b200541016a21052002417f6a22020d000b0b0240200b4103490d000340024020052d00002202410a460d00200120023a0000200141016a21010b024020052d00012202410a460d00200120023a0000200141016a21010b024020052d00022202410a460d00200120023a0000200141016a21010b024020052d00032202410a460d00200120023a0000200141016a21010b200541046a2205200c470d000b0b20042d00102205410176210a2005410171210220042802142109200428021821070b200441106a20012007200820021b22056b20052009200a20021b6a20016b10391a2004200428021420042d00102201410176200141017122011b36020c20042004280218200820011b360208200420042902083703002000200441002003104c20042d0010410171450d01200428021810280c010b20004200370200200041086a41003602002000200541027641036c10332001280200210b410021010340200141016a20054f0d03024020034108742206200b20016a220241016a2d00007241b0c6006a2d0000220c41c000470d0041004199c00010000b0240200620022d00007241b0c6006a2d0000220841c000470d0041004199c00010000b20002008411a74200c4114744180808018717241187510360240200141026a20054f0d000240200241026a2d0000220841526a0e1001000000000000000000000000000001000b0240200620087241b0c6006a2d0000220841c000470d0041004199c00010000b2000200c411c74200841167441808080f80071724118751036200141036a20054f0d000240200241036a2d0000220241526a0e1001000000000000000000000000000001000b2008410674210c0240200620027241b0c6006a2d0000220241c000470d0041004199c00010000b20002002200c6a41187441187510360b200141046a22012005490d000b0b200441206a24000f0b200441106a102e000b410041b0ca0010001003000b2e00024041002d00a4594101710d00410041013a00a4594198d90041bac000104e1a410d41004180c00010251a0b0b8c0101037f20004200370200200041086a4100360200024020011026220241704f0d000240024002402002410b490d002002410f72220341016a10272104200020023602042000200341026a360200200020043602080c010b200020024101743a0000200041016a21042002450d010b20042001200210041a0b200420026a41003a000020000f0b2000102e000b1900024041002d009859410171450d0041002802a05910280b0b2e00024041002d00b4594101710d00410041013a00b45941a8d90041caca00104e1a410e41004180c00010251a0b0b1900024041002d00a859410171450d0041002802b05910280b0b2e00024041002d00c4594101710d00410041013a00c45941b8d90041d3ca00104e1a410f41004180c00010251a0b0b1900024041002d00b859410171450d0041002802c05910280b0b2e00024041002d00d4594101710d00410041013a00d45941c8d90041ffca00104e1a411041004180c00010251a0b0b1900024041002d00c859410171450d0041002802d05910280b0b7b01027f230041e0006b22002400024041002d00e4594101710d00410041013a00e459200041abcb0041e00010042101410042003702d859410041003602e05941d8d90041e000105741002802dc59200141e00010041a410041002802dc5941e0006a3602dc59411141004180c00010251a0b200041e0006a24000b2f01017f02402001417f4a0d002000103f000b2000200110272202360200200020023602042000200220016a3602080b1e01017f024041002802d8592201450d00410020013602dc59200110280b0b6e01027f024041002d00f4594101710d00410041013a00f459410041c004102722003602e8594100200041c0046a3602f059410021010340200020016a41003a0000200141016a220141c004470d000b200041013a00004100200020016a3602ec59411241004180c00010251a0b0b1e01017f024041002802e8592201450d00410020013602ec59200110280b0bae0102017f017e23004180016b2203240020002903002104200341e0006a20022802002200200228020420006b1040200342003703582003200437035020032001370348200341186a2003290368370300200341206a200341f0006a290300370300200341286a200341e0006a41186a2903003703002003200137030020032003290360370310200310493703302003100a360238200341d0006a2001200341c8006a2003105c20034180016a24000b4f01017f23004190026b220424002004410036028c022004410c6a20022903001096010240200020012004410c6a200428028c0220034100109701450d0041004194d00010000b20044190026a24000bbb1407027f017e0e7f017e027f027d067f23004190036b220224002000290300100b02402001410c6a2802002200200128020822036b41306d41818004490d004100418bcc00100020012802082103200128020c21000b024020002003470d00410041bccc00100020012802082103200128020c21000b20024188036a4100360200420021042002420037038003200220012903003703f802200241f8026a41086a2205200020036b41306d105e200241ec026a41dbcc00104e2106200241e0026a41e3cc00104e2107200241808080fc033602dc02200242003702d402200242003702cc02024020012802082208200128020c2209460d00200241cc026a41086a210a200741016a210b200641016a210c2002412c6a410172210d2002412c6a410172210e420021040340024020082d0000410171450d002008280204418102490d00410041ebcc0010000b2002412c6a200841186a22004100200628020420062d0000220341017620034101711b20001030210f0240024020022802302210200f2d000022114101762212201141017122031b200628020420062d00002200410176200041017122001b470d002006280208200c20001b2100024020030d00200e210320114102490d02034020032d000020002d0000470d02200041016a2100200341016a21032012417f6a22120d000c030b0b2010450d01200228023420002010102a450d010b4100419fcd0010000b0240200f2d0000410171450d00200228023410280b2002412c6a200841246a22004100200728020420072d0000220341017620034101711b20001030210f0240024020022802302210200f2d000022114101762212201141017122031b200728020420072d00002200410176200041017122001b470d002007280208200b20001b2100024020030d00200d210320114102490d02034020032d000020002d0000470d02200041016a2100200341016a21032012417f6a22120d000c030b0b2010450d01200228023420002010102a450d010b410041c4cd0010000b0240200f2d0000410171450d00200228023410280b0240200829031022132004427f85580d00410041fccd001000200829031021130b200241ec016a200841206a280200200841196a20082d0018220041017122031b2008411c6a280200200041017620031b105f2002410036022c2002412c6a200241ec016a410410041a200228022c211002400240024020022802d0022212450d000240024020126941014b22110d002012417f6a201071210f0c010b2010210f20102012490d002010201270210f0b20022802cc02200f4102746a2802002200450d002012417f6a2114034020002802002200450d010240200028020422032010460d000240024020110d00200320147121030c010b20032012490d00200320127021030b2003200f470d020b200041086a200241ec016a41e000102a0d000b410041a4ce0010000c010b41e8001027221541086a200241ec016a41e00010041a201541003602002015201036020420022a02dc02211620022802d80241016ab32117024002402012450d0020162012b39420175d450d010b2012410174201241034920122012417f6a7141004772722100024002402017201695104a2217430000804f5d201743000000006071450d002017a921030c010b410021030b41022118024020002003200020034b1b22004101460d00024020002000417f6a710d00200021180c010b2000104b21180b024002400240201820022802d00222004b0d00201820004f0d02200041034921120240024020022802d802b320022a02dc0295104a2217430000804f5d201743000000006071450d002017a921030c010b410021030b0240024020120d0020006941014b0d002003410141202003417f6a676b7420034102491b21030c010b2003104b21030b20182003201820034b1b221820004f0d022018450d010b20184180808080044f0d0420184102741027210320022802cc022100200220033602cc0202402000450d00200010280b200220183602d0024100210020182103034020022802cc0220006a4100360200200041046a21002003417f6a22030d000b20022802d4022214450d01201428020421190240024020186941014b221a0d0020192018417f6a7121190c010b20192018490d00201920187021190b20022802cc0220194102746a200a3602002014280200220f450d012018417f6a211b0340200f280204210002400240201a0d002000201b7121000c010b20002018490d00200020187021000b0240024020002019470d00200f21140c010b02400240024020022802cc022000410274221c6a2203280200450d004100211d200f28020022120d01200f21030c020b20032014360200200f2114200021190c020b200f41086a2111200f210303402011201241086a41e000102a21122003280200210002402012450d002000211d0c020b20002103200028020022120d000b200021030b2014201d360200200320022802cc02201c6a28020028020036020020022802cc02201c6a280200200f3602000b2014280200220f0d000c020b0b20022802cc022100200241003602cc0202402000450d00200010280b200241003602d0020b024020022802d00222122012417f6a2200710d002000201071210f0c010b0240201020124f0d002010210f0c010b2010201270210f0b02400240024020022802cc02200f4102746a220328020022000d00201520022802d402360200200220153602d4022003200a36020020152802002200450d02200028020421000240024020122012417f6a2203710d00200020037121000c010b20002012490d00200020127021000b20022802cc0220004102746a21000c010b201520002802003602000b200020153602000b200220022802d80241016a3602d8020b2002412c6a2008412c6a280200200841256a20082d0024220041017122031b200841286a280200200041017620031b10600240200241ec016a2002412c6a10610d00410041b9ce0010000b41e00010272200200241ec016a41e00010041a20022008102f21032002200041e0006a22123602202002201236021c20022000360218200220082903103703102005200310621a024020022802182200450d002002200036021c200010280b024020032d0000410171450d00200228020810280b201320047c2104200841306a22082009470d010c020b0b1003000b02400240200420012903002213540d0020132004420188560d010b410041d4ce0010000b024020022802800322002002280284032203460d00034002402000411c6a280200200041186a2802006b41e000460d00410041a4d40010000b200041286a22002003470d000b0b2002412c6a200241f8026a10634200200228022c2200200228023020006b100c0240200228022c2200450d0020022000360230200010280b024020022802d4022200450d00034020002802002103200010282003210020030d000b0b20022802cc022100200241003602cc0202402000450d00200010280b024020072d0000410171450d00200728020810280b024020062d0000410171450d00200628020810280b200510641a20024190036a24000b5001027f230041206b2202240002402000280208200028020022036b41286d20014f0d0020002002410c6a2001200028020420036b41286d200041086a106522011066200110671a0b200241206a24000b990902047f027e230041a0016b220324000240410028029c59220441002d00985922054101762206200541017122051b2002490d00410041edd000100041002d0098592205410176210620054101712105410028029c5921040b0240200141002802a0594199d90020051b2004200620051b102a450d004100418dd10010000b20032002410028029c5941002d009859220541017620054101711b22056b3602142003200120056a3602102003200329021037030820034194016a200341086a41014101104c200341dc006a20032802980120032d009401220541017620054101711b2201103b200341e8006a41086a200341dc006a410041c6d1001038220241086a28020036020020032002290200370368410021050340200220056a4100360200200541046a2205410c470d000b200341f8006a41086a200341e8006a41d4d1001035220241086a28020036020020032002290200370378410021050340200220056a4100360200200541046a2205410c470d000b200341d0006a41e000103b20034188016a41086a200341f8006a2003280258200341d0006a41017220032d0050220541017122021b2003280254200541017620021b1034220241086a2802003602002003200229020037038801410021050340200220056a4100360200200541046a2205410c470d000b200341306a41086a20034188016a41f3d1001035220241086a28020036020020032002290200370330410021050340200220056a4100360200200541046a2205410c470d000b200341c4006a4104103a200341106a41086a200341306a200328024c200341c4006a41017220032d0044220541017122021b2003280248200541017620021b1034220241086a28020036020020032002290200370310410021050340200220056a4100360200200541046a2205410c470d000b0240200141e400460d0041002003280218200341106a41017220032d0010220541017122021b2003280214200541017620021b10160b024020032d0010410171450d00200328021810280b024020032d0044410171450d00200328024c10280b024020032d0030410171450d00200328023810280b024020032d008801410171450d0020032802900110280b024020032d0050410171450d00200328025810280b024020032d0078410171450d0020032802800110280b024020032d0068410171450d00200328027010280b024020032d005c410171450d00200328026410280b0240200328029c0120034194016a41017220032d009401220241017122011b2205200328029801200241017620011b6a417c6a22042005460d0020002005200420056b10021a0b200341106a200041e0001042200341306a2102200341106a21014102210003404200200141086a2903002207200041014622051b21082007422088200129030020051b21074103410f20051b21050340200220056a20073c000020074208882008423886842107200842088821082005417f6a2205417f470d000b200141106a2101200241106a21022000417f6a22000d000b02402004200341306a4104102a450d0041004180d20010000b024020032d009401410171450d00200328029c0110280b200341a0016a24000b990902047f027e230041a0016b22032400024041002802ac59220441002d00a85922054101762206200541017122051b2002490d00410041edd000100041002d00a859220541017621062005410171210541002802ac5921040b0240200141002802b05941a9d90020051b2004200620051b102a450d004100418dd10010000b2003200241002802ac5941002d00a859220541017620054101711b22056b3602142003200120056a3602102003200329021037030820034194016a200341086a41014101104c200341dc006a20032802980120032d009401220541017620054101711b2201103b200341e8006a41086a200341dc006a410041c6d1001038220241086a28020036020020032002290200370368410021050340200220056a4100360200200541046a2205410c470d000b200341f8006a41086a200341e8006a41d4d1001035220241086a28020036020020032002290200370378410021050340200220056a4100360200200541046a2205410c470d000b200341d0006a41c001103b20034188016a41086a200341f8006a2003280258200341d0006a41017220032d0050220541017122021b2003280254200541017620021b1034220241086a2802003602002003200229020037038801410021050340200220056a4100360200200541046a2205410c470d000b200341306a41086a20034188016a41f3d1001035220241086a28020036020020032002290200370330410021050340200220056a4100360200200541046a2205410c470d000b200341c4006a4104103a200341106a41086a200341306a200328024c200341c4006a41017220032d0044220541017122021b2003280248200541017620021b1034220241086a28020036020020032002290200370310410021050340200220056a4100360200200541046a2205410c470d000b0240200141c401460d0041002003280218200341106a41017220032d0010220541017122021b2003280214200541017620021b10160b024020032d0010410171450d00200328021810280b024020032d0044410171450d00200328024c10280b024020032d0030410171450d00200328023810280b024020032d008801410171450d0020032802900110280b024020032d0050410171450d00200328025810280b024020032d0078410171450d0020032802800110280b024020032d0068410171450d00200328027010280b024020032d005c410171450d00200328026410280b0240200328029c0120034194016a41017220032d009401220241017122011b2205200328029801200241017620011b6a417c6a22042005460d0020002005200420056b10021a0b200341106a200041c0011042200341306a2102200341106a21014102210003404200200141086a2903002207200041014622051b21082007422088200129030020051b21074103410f20051b21050340200220056a20073c000020074208882008423886842107200842088821082005417f6a2205417f470d000b200141106a2101200241106a21022000417f6a22000d000b02402004200341306a4104102a450d0041004180d20010000b024020032d009401410171450d00200328029c0110280b200341a0016a24000beb0101037f23004190096b2202240041002103200241d0076a410041c00110011a200241d0046a410041800310011a200241d0076a41002802d859220441002802dc5920046b10041a200241d0046a200141c00110041a200241d0076a41e0006a200041e00010041a200241e0003602cc04200220003602c804200220022902c804370300200241c8d900200241d0046a41c0016a1068200241086a410041c00410011a0240200241d0076a41c001200241d0046a4180034102200241086a41c004100d0d00200241086a41002802e859220041002802ec5920006b102a4521030b20024190096a240020030bcf0101067f230041206b22022400200041086a210302400240024020002802042204200028020822054f0d0020032004200110692000200028020441286a22033602040c010b2004200028020022066b41286d220741016a220441e7cc99334f0d0120032002410c6a200520066b41286d220541017422062004200620044b1b41e6cc9933200541b3e6cc19491b2007200310652204280208200110692004200428020841286a360208200020041066200410671a200028020421030b200241206a2400200341586a0f0b2000103f000b6f01027f230041106b22022400200041003602082000420037020020024108360204200241046a200141086a220310a2011a20002002280204107d2002200028020436020c20022000280200220036020820022000360204200241046a2001109a01200310a3011a200241106a24000b5501037f024020002802002201450d00200121020240200028020422032001460d00200041086a210203402002200341586a220310ac0120032001470d000b200028020021020b20002001360204200210280b20000b6701017f410021042000410036020c200041106a2003360200024002402001450d00200141e7cc99334f0d01200141286c102721040b2000200436020020002004200241286c6a220336020820002004200141286c6a36020c2000200336020420000f0b1003000b9e0101047f2001280204210202402000280204220320002802002204460d00200041086a210503402005200241586a200341586a220310692001200128020441586a220236020420032004470d000b200028020021040b2000200236020020012004360204200028020421032000200128020836020420012003360208200028020821032000200128020c3602082001200336020c200120012802043602000b1c01017f200010d401024020002802002201450d00200110280b20000be10301027f230041a0066b22032400200341a0046a418002200028020020002802042001280208200141016a20012d0000220041017122041b2001280204200041017620041b109d01410021010340200341c0016a20016a200341a0046a2001413f736a2d00003a0000200141016a220141c000470d000b200341e0036a200341c0016a41c00010041a200341e0036a41c00020034180036a413010181a200341a0046a41c0006a2100410021010340200341c0016a20016a20002001413f736a2d00003a0000200141016a220141c000470d000b200341e0036a200341c0016a41c00010041a200341e0036a41c00020034180036a41306a2204413010181a20034180036a41e000200341c0016a41c00110191a200341a0056a2100410021010340200320016a20002001413f736a2d00003a0000200141016a220141c000470d000b200341e0036a200341c00010041a200341e0036a41c00020034180036a413010181a200341e0056a2100410021010340200320016a20002001413f736a2d00003a0000200141016a220141c000470d000b200341e0036a200341c00010041a200341e0036a41c0002004413010181a20034180036a41e000200341c00110191a200341c0016a41c001200341c001200241c001101a1a200341a0066a24000b8f0101017f20012002290300370300200141086a200241086a280200360200410021030340200220036a4100360200200341046a2203410c470d000b200141003602182001411c6a220342003702002001200228021836021820032002411c6a280200360200200141206a200241206a22032802003602002001200229031037031020034100360200200242003703180b5001017f230041106b220224002000290300100b200241046a2001106b420120022802042200200228020820006b10101a024020022802042200450d0020022000360208200010280b200241106a24000b6501017f230041106b22022400200041003602082000420037020020024100360204200241046a200110ad011a20002002280204107d2002200028020436020c20022000280200220036020820022000360204200241046a200110ae011a200241106a24000b970102047f027e230041206b220224002000290300100b2002210341022104200121050340200541086a290300210620052903002107410f21000340200320006a20073c000020074208882006423886842107200642088821062000417f6a2200417f470d000b200541106a2105200341106a21032004417f6a22040d000b2002101141d5cf001012200141f0cf00106d200241206a24000b860103037f027e017f230041206b2202240020022103410221040340200041086a290300210520002903002106410f21070340200320076a20063c000020064208882005423886842106200542088821052007417f6a2207417f470d000b200041106a2100200341106a21032004417f6a22040d000b20024120101c20011012200241206a24000b8d0103037f027e017f230041206b2202240020022103410221040340200141086a290300210520012903002106410f21070340200320076a20063c000020064208882005423886842106200542088821052007417f6a2207417f470d000b200141106a2101200341106a21032004417f6a22040d000b0240200210130d00410041f2cf0010000b200241206a24000ba70101037f230041206b220221032002240002400240101422040d00410021020c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a0b20032002360218200320023602142003200220046a36021c20034200370308200341146a200341086a10701a20034200370300200341146a200310701a02402004418004490d002002450d00200210230b200341206a24000b4001017f02402000280208200028020422026b41074b0d00410041c0d4001000200028020421020b20012002410810041a2000200028020441086a36020420000b5701037f230022022103024010142204450d000240200441ff034b0d0020022004410f6a4170716b220224002002200410151a0c010b200410212202200410151a2004418004490d002002450d00200210230b200324000b5701037f230022022103024010142204450d000240200441ff034b0d0020022004410f6a4170716b220224002002200410151a0c010b200410212202200410151a2004418004490d002002450d00200210230b200324000b5701037f230022022103024010142204450d000240200441ff034b0d0020022004410f6a4170716b220224002002200410151a0c010b200410212202200410151a2004418004490d002002450d00200210230b200324000b5701037f230022022103024010142204450d000240200441ff034b0d0020022004410f6a4170716b220224002002200410151a0c010b200410212202200410151a2004418004490d002002450d00200210230b200324000bef0101047f230041c0006b220221032002240002400240101422040d00410021020c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a0b2003413c6a2205200220046a360200200320023602382003200236023420034200370328200341346a200341286a10701a200341346a200341276a10761a200341346a200341266a10761a200341186a20052802003602002003200329023437031020032001370308200320003703002003200329032820032d002720032d0026107702402004418004490d002002450d00200210230b200341c0006a24000b3d01017f0240200028020820002802042202470d00410041c0d4001000200028020421020b20012002410110041a2000200028020441016a36020420000b6602017f017e230041e0006b220424002000290300210520044200370358200420053703502004200137034820042001370300200441106a200141001078200410493703302004100a360238200441d0006a2001200441c8006a20041079200441e0006a24000b810201047f230041106b2203210420032400024020020d00200341406a2202220324000b200341406a22032400024020014100200341c000101b220541c100490d002001410020051021220341c000101b1a0b200441003602002004200341c0006a220636020c2004200336020820042003360204200441046a2004107c1a02402004280200450d00410041ead40010000b2004200636020c2004200336020820042003360204200441046a200210c5011a0240200541c100490d00200310230b20002002290310370300200041186a200241286a290300370300200041106a200241206a290300370300200041086a200241186a290300370300200441106a24000b4f01017f23004190026b220424002004410036028c022004410c6a20022903001096010240200020012004410c6a200428028c022003410010c601450d0041004194d00010000b20044190026a24000b9d0201047f230041d0006b220221032002240041002104024010142205450d00024002402005418004490d002005102121040c010b20022005410f6a4170716b220424000b2004200510151a0b20032004360248200320043602442003200420056a36024c20034200370338200341c4006a200341386a10701a200341003602342003420037022c200341c4006a2003412c6a107b1a0240200328024c2003280248460d00410041a6d500412e10160b200341206a200341cc006a280200360200200320032902443703182003200137031020032000370308200341086a20032903382003412c6a105b0240200328022c2202450d0020032002360230200210280b02402005418004490d002004450d00200410230b200341d0006a24000b7701037f230041106b220224002002410036020c20002002410c6a107c1a2001200228020c107d02402000280208200028020422036b2001280204200128020022046b22014f0d00410041c0d4001000200028020421030b20042003200110041a2000200028020420016a360204200241106a240020000b7401047f2000280204210241002103410021040340024020022000280208490d00410041a2d5001000200028020421020b20022c000021052000200241016a2202360204200541ff0071200441ff01712204742003722103200441076a21042002210220054100480d000b2001200336020020000b3a01027f024020012000280204200028020022026b22034d0d002000200120036b10a4010f0b0240200120034f0d002000200220016a3602040b0bdc0103037f017e017f230041206b220221032002240002400240101422040d00410021020c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a0b20032002360218200320023602142003200220046a36021c20034200370308200341146a200341086a10701a200341146a200341076a10761a0240200328021c2003280218460d00410041a6d500412e10160b2003290308210520032d000721062000100b20052006410047100e02402004418004490d002002450d00200210230b200341206a24000b830202037f047e230041306b220221032002240002400240101422040d00410021020c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a0b20032002360228200320023602242003200220046a36022c20034200370318200341246a200341186a10701a200341246a200341106a1080011a200341246a200341086a1080011a200341246a20031080011a0240200328022c2003280228460d00410041a6d500412e10160b200329030021052003290308210620032903102107200329031821082000100b2008200720062005100f02402004418004490d002002450d00200210230b200341306a24000b4001017f02402000280208200028020422026b41074b0d00410041c0d4001000200028020421020b20012002410810041a2000200028020441086a36020420000bf30101047f230041c0006b220221032002240041002104024010142205450d00024002402005418004490d002005102121040c010b20022005410f6a4170716b220424000b2004200510151a0b20032004360238200320043602342003200420056a36023c2003410036023020034200370228200341346a200341286a1082011a0240200328023c2003280238460d00410041a6d500412e10160b200341206a2003413c6a280200360200200320032902343703182003200137031020032000370308200341086a200341286a106a200341286a1083011a02402005418004490d002004450d00200410230b200341c0006a24000b7601027f230041106b220224002002410036020020002002107c1a2001200228020010840102402001280200220320012802042201460d00034020022000360204200220033602082002200341086a36020c200241086a200241046a108501200341206a22032001470d000b0b200241106a240020000b1b0002402000280200450d00200010d501200028020010280b20000b8c0101037f0240200120002802042202200028020022036b41057522044d0d002000200120046b10df010f0b0240200120044f0d0002402002200320014105746a2203460d002002416c6a2101034002402001410c6a2204280200417f460d00200110d6011a0b2004417f360200200141746a2104200141606a210120042003470d000b0b200020033602040b0b4c01017f230041106b220224002001280200200028020010701a20002802042100200128020021012002410036020c20012002410c6a107c1a20012000200228020c10e501200241106a24000bcd0101047f230041306b220221032002240041002104024010142205450d00024002402005418004490d002005102121040c010b20022005410f6a4170716b220424000b2004200510151a0b20032004360218200320043602142003200420056a36021c2003410036021020034200370208200341146a200341086a1087011a0240200328021c2003280218460d00410041a6d500412e10160b2000100b200341206a200341086a1046200341086a1088011a02402005418004490d002004450d00200410230b200341306a24000b7701027f230041106b220224002002410036020020002002107c1a2001200228020010890102402001280200220320012802042201460d00034020022000360204200220033602082002200341086a36020c200241086a200241046a108a01200341c0006a22032001470d000b0b200241106a240020000b1b0002402000280200450d002000108002200028020010280b20000bb00101047f230041106b2202240002400240200120002802042203200028020022046b41067522054d0d002000200120056b1081020c010b200120054f0d0002402003200420014106746a2204460d00200341486a210103400240200141306a22052802002203417f460d002002410f6a2001200341027441d8d5006a2802001102000b2005417f360200200141786a2105200141406a210120052004470d000b0b200020043602040b200241106a24000b4c01017f230041106b220224002001280200200028020010701a20002802042100200128020021012002410036020c20012002410c6a107c1a20012000200228020c10f501200241106a24000b8b0201047f230041d0006b220221032002240041002104024010142205450d00024002402005418004490d002005102121040c010b20022005410f6a4170716b220424000b2004200510151a0b20032004360248200320043602442003200420056a36024c200341386a41003602002003420037033020034200370328200341c4006a200341286a1070200341286a41086a2202108c011a0240200328024c2003280248460d00410041a6d500412e10160b200341206a200341c4006a41086a280200360200200320032902443703182003200137031020032000370308200341086a200341286a105d2002108d011a02402005418004490d002004450d00200410230b200341d0006a24000b5c01027f230041106b220224002002410036020c20002002410c6a107c1a2001200228020c10c90102402001280200220320012802042201460d0003402000200310ca011a200341306a22032001470d000b0b200241106a240020000b5501037f024020002802002201450d00200121020240200028020422032001460d00200041086a210203402002200341506a220310cc0120032001470d000b200028020021020b20002001360204200210280b20000bb80101037f230041e0006b220221032002240002400240101422040d00410021020c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a0b20032002360258200320023602542003200220046a36025c200341d4006a200341086a108f011a0240200328025c2003280258460d00410041a6d500412e10160b2000100b200341086a104402402004418004490d002002450d00200210230b200341e0006a24000b920100200020011070200141086a1090012001410c6a109001200141106a109001200141146a109001200141186a1090012001411c6a109001200141206a109001200141246a109001200141286a1090012001412c6a109001200141306a109101200141326a109101200141346a109001200141386a1090012001413c6a109001200141c0006a109001200141c4006a1090010b4001017f02402000280208200028020422026b41034b0d00410041c0d4001000200028020421020b20012002410410041a2000200028020441046a36020420000b4001017f02402000280208200028020422026b41014b0d00410041c0d4001000200028020421020b20012002410210041a2000200028020441026a36020420000bb70101037f230041206b220221032002240002400240101422040d00410021020c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a0b20032002360218200320023602142003200220046a36021c20034200370308200341146a200341086a10701a0240200328021c2003280218460d00410041a6d500412e10160b2003290308100b02402004418004490d002002450d00200210230b200341206a24000bb80201057f230041c0006b2202210320022400024002400240101422040d00200341186a4200370300200341106a4200370300200342003703082003420037030041002102200421050c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a200341186a4200370300200341106a42003703002003420037030820034200370300200220046a21052004411f4b0d010b410041c0d40010000b200341206a2002412010041a200341206a200341206a41206a2003109401200241206a2106024020044120460d00410041a6d500412e10160b200341386a2005360200200341346a2006360200200320023602302003200137032820032000370320200341206a2003106c02402004418004490d002002450d00200210230b200341c0006a24000be20104017f017e017f027e230041106b22032400024020002001460d0042002104411021054200210603400240024020054102490d00200642088620044238888421062005417f6a2105200420003100008442088621040c010b024020054101460d00410041bad60010000b20003100002107200220063703082002200420078437030041102105200241106a210242002104420021060b200041016a22002001470d000b20054110460d00200320042006200541037441786a4100200541014b1b102b2002200341086a290300370308200220032903003703000b200341106a24000bfa0101037f230041c0006b2202210320022400024002400240101422040d00200341186a4200370300200341106a42003703002003420037030820034200370300410021020c010b024002402004418004490d002004102121020c010b20022004410f6a4170716b220224000b2002200410151a200341186a4200370300200341106a420037030020034200370308200342003703002004411f4b0d010b410041c0d40010000b200341206a2002412010041a200341206a200341206a41206a2003109401024020044120460d00410041a6d500412e10160b20032003106e02402004418004490d002002450d00200210230b200341c0006a24000b6201027f0240200028028002220241086a418102490d00410041a5d000100020002802800221020b200020026a2103410721020340200320026a20013c0000200142088821012002417f6a2202417f470d000b200020002802800241086a360280020b5001017f23004190026b22062400200641046a200410980141a68203200120022003200628028802200628028c0220051017210402402006280284022205450d00200510290b20064190026a240020040ba10203057f027e017f230041206b220224002002210341022104200141106a220521060340200641086a290300210720062903002108410f21090340200320096a20083c000020084208882007423886842108200742088821072009417f6a2209417f470d000b200641106a2106200341106a21032004417f6a22040d000b20022103410221060340200541086a290300210720052903002108410f21090340200320096a20083c000020084208882007423886842108200742088821072009417f6a2209417f470d000b200541106a2105200341106a21032006417f6a22060d000b2000413436028802200041003602800220002000360284022002200041346a3602082002200036020420022000360200200220011099011a200241206a24000bda0102057f027e230041206b22022400200141106a210320002001109a01210420022105410221060340200341086a290300210720032903002108410f21000340200520006a20083c000020084208882007423886842108200742088821072000417f6a2200417f470d000b200341106a2103200541106a21052006417f6a22060d000b02402004280208200428020422006b411f4a0d00410041c2d0001000200428020421000b20002002412010041a2004200428020441206a3602042004200141306a109b01200141386a109c012100200241206a240020000b4001017f02402000280208200028020422026b41074a0d00410041c2d0001000200028020421020b20022001410810041a2000200028020441086a36020420000b4001017f02402000280208200028020422026b41074a0d00410041c2d0001000200028020421020b20022001410810041a2000200028020441086a36020420000b4001017f02402000280208200028020422026b41034a0d00410041c2d0001000200028020421020b20022001410410041a2000200028020441046a36020420000bb00401047f23004180036b220624000240200141e03f4b0d00200541ff014a0d00200641c0026a410041c00010011a200620053a00bf02200641003a00be02200620013a00bd02200620014108763a00bc0220064188026a42abb38ffc91a3b3f0db0037030020064180026a42ffa4b988c591da829b7f370300200641f8016a42f2e6bbe3a3a7fda7a57f370300200642e7cca7d0d6d0ebb3bb7f3703f001200642003703e801200641003602e001200641a0016a200641c0026a41c000109e01200641a0016a20022003109e01200641a0016a200641bc026a4103109e01200641a0016a20042005109e01200641a0016a200641bc026a41036a22074101109e01200641a0016a20064190026a109f01200641f0006a4100412110011a2001411f6a22034120490d0020034105762108200041606a2109410121000340410021030340200641f0006a20036a220220022d000020064190026a20036a2d0000733a0000200341016a22034120470d000b200620003a009001200642abb38ffc91a3b3f0db00370368200642ffa4b988c591da829b7f370360200642f2e6bbe3a3a7fda7a57f370358200642e7cca7d0d6d0ebb3bb7f37035020064200370348200641003602402006200641f0006a4121109e01200620042005109e01200620074101109e012006200641f0006a109f012009200041057422036a200641f0006a200120036b2203411f7520037141206a10041a20002008462103200041016a21002003450d000b0b20064180036a24000b6f01027f02402002450d0020002802402103034020012d000021042000200341016a360240200020036a20043a000002402000280240220341c000470d00200010a0014100210320004100360240200020002903484280047c3703480b200141016a21012002417f6a22020d000b0b0b5b01037f200010a101200041d0006a2102410021030340411820034103746b2104410021000340200120006a200220006a2802002004763a0000200041046a22004120470d000b200141016a2101200341016a22034104470d000b0bbe04010c7f230041a0026b2201240041002102410021030340200141206a20026a2000200341ff017122046a280000220341187420034180fe03714108747220034108764180fe037120034118767272360200200441046a2103200241046a220241c000470d000b41002102200128022021050340200141206a20026a220341c0006a200341386a2802002204410f772004410d77732004410a7673200341246a2802006a20056a200341046a28020022034119772003410e77732003410376736a36020020032105200241046a220241c001470d000b200041d0006a2102410021030340200120036a200220036a280200360200200341046a22034120470d000b41002104200128020c2106200128021c210720012802182105200128021421032001280210210820012802082109200128020421022001280200210a03402005210b200321052009220c2002220972200a220271200c200971722002411e772002411377732002410a77736a200b20082203417f7371200520037172200141206a20046a2802006a2003411a772003411577732003410777736a200441a4d2006a2802006a20076a22086a210a200820066a2108200b2107200c2106200441046a2204418002470d000b2001200b36021c20012005360218200120033602142001200836021020012009360208200120023602042001200a3602002001200c36020c200041d0006a2104410021030340200420036a22022002280200200120036a2802006a360200200341046a22034120470d000b200141a0026a24000bea0102027f027e2000200028024022016a22024180013a000002402001ad220342017c423842c00020014138491b22045a0d00200241016a21012003427f8520047c21030340200141003a0000200141016a21012003427f7c22034200520d000b0b0240200028024022014138490d00200010a00120004100413810011a200028024021010b200020002903482001410374ad7c22033c003f20002003370348200020034208883c003e200020034210883c003d200020034218883c003c200020034220883c003b200020034228883c003a200020034230883c0039200020034238883c0038200010a0010b6b03027f017e017f20012802042202200128020022036b41286dad2104200028020021010340200141016a2101200442ff005621052004420788210420050d000b20002001360200024020032002460d0003402000200310a6011a200341286a22032002470d000b0b20000b5f01027f230041106b220224002002200128020420012802006b41286d36020c20002002410c6a10a8011a02402001280200220320012802042201460d0003402000200310a9011a200341286a22032001470d000b0b200241106a240020000ba30201067f230041206b2202240002400240024020002802082203200028020422046b2001490d000340200441003a00002000200028020441016a22043602042001417f6a22010d000c020b0b2004200028020022056b220620016a2207417f4c0d012002411c6a200041086a360200410021040240200320056b220341017422052007200520074b1b41ffffffff07200341ffffffff03491b2203450d002003102721040b2002200436020c2002200420036a3602182002200420066a22043602100340200441003a0000200441016a21042001417f6a22010d000b2002200436021420002002410c6a10a5010240200228021420022802102201460d00200220013602140b200228020c2201450d00200110280b200241206a24000f0b2000103f000b890101037f200120012802042000280204200028020022026b22036b2204360204024020034101480d0020042002200310041a200128020421040b200028020021032000200436020020012003360204200028020421042000200128020836020420012004360208200028020821042000200128020c3602082001200436020c200120012802043602000b5802027f017e2000200110a70122022802002001411c6a28020022006a200128021822036b41086a2101200020036bad21040340200141016a2101200442ff005621002004420788210420000d000b2002200136020020020b7403017f017e017f200128020420012d0000220241017620024101711bad2103200028020021020340200241016a2102200342ff005621042003420788210320040d000b200020023602000240200128020420012d0000220441017620044101711b2204450d002000200420026a3602000b20000b860102027f017e230041106b220224002000280204210320013502002104034020022004a741ff0071200442ff00562201410774723a000f0240200028020820036b41004a0d00410041c2d0001000200028020421030b2004420788210420032002410f6a410110041a2000200028020441016a220336020420010d000b200241106a240020000b19002000200110aa01200141106a109a01200141186a10ab010ba30101037f230041106b220224002002200128020420012d0000220341017620034101711b36020c20002002410c6a10a8011a0240200128020420012d00002203410176200341017122041b2203450d002001280208200141016a20041b210402402000280208200028020422016b20034e0d00410041c2d0001000200028020421010b20012004200310041a2000200028020420036a3602040b200241106a240020000b7801037f230041106b220224002002200128020420012802006b36020c20002002410c6a10a8011a02402000280208200028020422036b2001280204200128020022046b22014e0d00410041c2d0001000200028020421030b20032004200110041a2000200028020420016a360204200241106a240020000b3401017f024020012802182202450d002001411c6a2002360200200210280b024020012d0000410171450d00200128020810280b0b960103037f017e017f230041106b2202240020012802042203200128020022046b410575ad2105200028020021010340200141016a2101200542ff005621062005420788210520060d000b20002001360200024020042003460d0003402000200028020041086a3602002002200036020c200441086a2002410c6a410110b001200441206a22042003470d000b0b200241106a240020000b7501027f230041106b220224002002200128020420012802006b4105753602082000200241086a10a8011a02402001280200220320012802042201460d0003402002200036020c20002003109a011a200341086a2002410c6a410110af01200341206a22032001470d000b0b200241106a240020000b5401017f230041106b22032400200128020021012003200028021036020c20012003410c6a10a8011a02402000280210417f470d0010b101000b20012000109c011a2001200041046a10ba011a200341106a24000b6503027f017e017f20012802002203280200210120002802102204ad21050340200141016a2101200542ff005621062005420788210520060d000b2003200136020002402004417f470d0010b101000b2003200141046a3602002003200041046a10b2011a0b05001003000b980103037f017e017f230041106b2202240020012802042203200128020022046b41386dad2105200028020021010340200141016a2101200542ff005621062005420788210520060d000b20002001360200024020042003460d0003402002200036020c20042002410c6a410110b301200228020c2201200128020041026a360200200441386a22042003470d000b0b200241106a240020000b8c0103037f017e017f230041106b2203240020012802002204280200210120002802302205ad21060340200141016a2101200642ff005621072006420788210620070d000b200420013602002003200436020802402005417f470d0010b101000b200541027441dcc2006a28020021012003200341086a36020c2003410c6a20002001110200200341106a24000b170020002802002802002200200028020041216a3602000b170020002802002802002200200028020041216a3602000b220020002802002802002200200028020041226a3602002000200141246a10a7011a0b170020002802002802002200200028020041216a3602000b170020002802002802002200200028020041206a3602000b20002000280200280200220041e100410120012802001b20002802006a3602000b7801027f230041106b220224002002200128020420012802006b41386d3602082000200241086a10a8011a02402001280200220320012802042201460d0003402002200036020c20032002410c6a410110bb01200228020c200341346a10bc011a200341386a22032001470d000b0b200241106a240020000b6f01017f230041106b2203240020012802002101200320002802303602082001200341086a10a8011a20032001360204024020002802302201417f470d0010b101000b2001410274418cc3006a28020021012003200341046a36020c2003410c6a20002001110200200341106a24000b4001017f02402000280208200028020422026b41014a0d00410041c2d0001000200028020421020b20022001410210041a2000200028020441026a36020420000b2c01017f200028020028020021024100210003402002200120006a10be011a200041016a22004121470d000b0b4001017f02402000280208200028020422026b41004a0d00410041c2d0001000200028020421020b20022001410110041a2000200028020441016a36020420000b2c01017f200028020028020021024100210003402002200120006a10be011a200041016a22004121470d000b0b3f01017f200028020028020021024100210003402002200120006a10be011a200041016a22004121470d000b2002200141216a10c101200141246a10aa011a0b4001017f02402000280208200028020422026b41004a0d00410041c2d0001000200028020421020b20022001410110041a2000200028020441016a36020420000b2c01017f200028020028020021024100210003402002200120006a10be011a200041016a22004121470d000b0b2c01017f200028020028020021024100210003402002200120006a10be011a200041016a22004120470d000b0b6201027f230041106b220224004100210320002802002802002100200220012802004100473a000f20002002410f6a10be011a024020012802002201450d0003402000200120036a10be011a200341016a220341e000470d000b0b200241106a24000bbd0101027f230041c0006b22022400024020002001107c200141086a10702200280208200028020422036b411f4b0d00410041c0d4001000200028020421030b200241206a2003412010041a2000200028020441206a360204200241206a200241206a41206a2002109401200141286a200241186a290300370300200141206a200241106a290300370300200141186a2002290308370300200120022903003703102000200141306a1076200141316a10762101200241c0006a240020010b5001017f23004190026b22062400200641046a200410c70141aaff00200120022003200628028802200628028c0220051017210402402006280284022205450d00200510290b20064190026a240020040ba10203057f027e017f230041206b220224002002210341022104200141106a220521060340200641086a290300210720062903002108410f21090340200320096a20083c000020084208882007423886842108200742088821072009417f6a2209417f470d000b200641106a2106200341106a21032004417f6a22040d000b20022103410221060340200541086a290300210720052903002108410f21090340200320096a20083c000020084208882007423886842108200742088821072009417f6a2209417f470d000b200541106a2105200341106a21032006417f6a22060d000b2000413436028802200041003602800220002000360284022002200041346a36020820022000360204200220003602002002200110c8011a200241206a24000bda0102057f027e230041206b22022400200141106a210320002001109a01210420022105410221060340200341086a290300210720032903002108410f21000340200520006a20083c000020084208882007423886842108200742088821072000417f6a2200417f470d000b200341106a2103200541106a21052006417f6a22060d000b02402004280208200428020422006b411f4a0d00410041c2d0001000200428020421000b20002002412010041a2004200428020441206a3602042004200141306a109b01200141386a109c012100200241206a240020000b6b01037f0240200120002802042202200028020022036b41306d22044d0d002000200120046b10cb010f0b0240200120044f0d00024020022003200141306c6a2201460d00200041086a210403402004200241506a220210cc0120022001470d000b0b200020013602040b0b20002000200110cd01200141106a1070200141186a10cd01200141246a10cd010bf20101067f230041206b22022400200041086a210302400240024020002802082204200028020422056b41306d2001490d0003402003200510ce012000200028020441306a22053602042001417f6a22010d000c020b0b2005200028020022066b41306d220720016a220541d6aad52a4f0d012002410c6a200420066b41306d220441017422062005200620054b1b41d5aad52a200441aad5aa15491b2007200310cf0122052802082103200541106a280200210403402004200310ce012005200528020841306a22033602082001417f6a22010d000b2000200510d001200510d1011a0b200241206a24000f0b2000103f000b4700024020012d0024410171450d002001412c6a28020010280b024020012d0018410171450d00200141206a28020010280b024020012d0000410171450d00200128020810280b0ba90401067f230041206b220224002002410036021c200242003702142000200241146a107b1a0240024002402002280218220320022802142204460d00200241106a410036020020024200370308200320046b220541704f0d02024002402005410a4b0d00200220054101743a0008200241086a41017221060c010b2005410f72220741016a102721062002200536020c2002200741026a360208200220063602100b0340200620042d00003a0000200641016a2106200441016a22042003470d000b200641003a0000024020012d0000410171450d00200128020841003a00002001410036020420012d0000410171450d00200128020810280b20012002290308370200200141086a200241086a41086a280200360200410021040340200241086a20046a4100360200200441046a2204410c470d000b20022d0008410171450d01200228021010280c010b200241106a410036020020024200370308410021040340200241086a20046a4100360200200441046a2204410c470d000b024020012d0000410171450d00200128020841003a00002001410036020420012d0000410171450d00200128020810280b20012002290308370200200141086a200241086a41086a280200360200410021040340200241086a20046a4100360200200441046a2204410c470d000b20022d0008410171450d00200228021010280b024020022802142204450d0020022004360218200410280b200241206a240020000f0b200241086a102e000ba30101027f20014200370300200141086a4200370300410021020340200120026a4100360200200241046a2202410c470d000b2001420037031820014200370310200141206a4100360200200141186a2103410021020340200320026a4100360200200241046a2202410c470d000b200142003702242001412c6a4100360200200141246a2101410021020340200120026a4100360200200241046a2202410c470d000b0b6701017f410021042000410036020c200041106a2003360200024002402001450d00200141d6aad52a4f0d01200141306c102721040b2000200436020020002004200241306c6a220336020820002004200141306c6a36020c2000200336020420000f0b1003000b9f0101047f2001280204210202402000280204220320002802002204460d00200041086a210503402005200241506a200341506a220310d2012001200128020441506a220236020420032004470d000b200028020021040b2000200236020020012004360204200028020421032000200128020836020420012003360208200028020821032000200128020c3602082001200336020c200120012802043602000b1c01017f200010d301024020002802002201450d00200110280b20000bc10101027f20012002290300370300200141086a200241086a280200360200410021030340200220036a4100360200200341046a2203410c470d000b2001200229031037031020012002290318370318200141206a200241206a280200360200200241186a2104410021030340200420036a4100360200200341046a2203410c470d000b200120022902243702242001412c6a2002412c6a280200360200200241246a2102410021030340200220036a4100360200200341046a2203410c470d000b0b3d01027f02402000280208220120002802042202460d0003402000200141506a22013602082000280210200110cc01200028020822012002470d000b0b0b3d01027f02402000280208220120002802042202460d0003402000200141586a22013602082000280210200110ac01200028020822012002470d000b0b0b5d01037f02402000280204220120002802002202460d002001416c6a2101034002402001410c6a2203280200417f460d00200110d6011a0b2003417f360200200141746a2103200141606a210120032002470d000b0b200020023602040b1b0002402000280200450d00200010d701200028020010280b20000b7d01057f230041106b2201240002402000280204220220002802002203460d00200241486a210203400240200241306a22042802002205417f460d002001410f6a2002200541027441d8d5006a2802001102000b2004417f36020020022003472104200241486a210220040d000b0b20002003360204200141106a24000b02000b02000b1a00024020012d0024410171450d002001412c6a28020010280b0b02000b02000b0800200110de011a0b3701027f024020002802042201450d00200120012802042202417f6a36020420020d00200120012802002802081101002001103d0b20000b9e0201057f230041206b2202240002400240024020002802082203200028020422046b4105752001490d00034020044200370300200441186a4200370300200441106a4200370300200441086a42003703002000200028020441206a22043602042001417f6a22010d000c020b0b2004200028020022056b410575220620016a220441808080c0004f0d012002410c6a200320056b220341047522052004200520044b1b41ffffff3f200341e0ffffff07491b2006200041086a10e00122032802082104034020044200370300200441186a4200370300200441106a4200370300200441086a4200370300200441206a21042001417f6a22010d000b200320043602082000200310e101200310e2011a0b200241206a24000f0b2000103f000b6801017f410021042000410036020c200041106a2003360200024002402001450d00200141808080c0004f0d012001410574102721040b200020043602002000200420024105746a22033602082000200420014105746a36020c2000200336020420000f0b1003000bab0101047f2001280204210202402000280204220320002802002204460d000340200241606a200341606a2205290300370300200241686a200341686a10e3011a2001200128020441606a22023602042005210320052004470d000b200028020021040b2000200236020020012004360204200028020421022000200128020836020420012002360208200028020821022000200128020c3602082001200236020c200120012802043602000b2101017f2000200028020410e401024020002802002201450d00200110280b20000b7e01027f2000417f360210200041003a0000024020012802102202417f460d0020004100360204200041086a22034200370200200020012802043602042003200141086a2802003602002000410c6a2001410c6a2203280200360200200020012802003602002000200236021020034100360200200142003702040b20000b5601037f0240200028020822022001460d0003402000200241606a22033602080240200341186a2204280200417f460d002002416c6a10d6011a200028020821030b2004417f3602002003210220032001470d000b0b0b960101017f230041106b220324000240024020020d002003410c6a410036020020034200370204200020031090011a2000200341046a220210e6011a02402001280210417f460d00200141046a10d6011a0b2001200329020037020020014100360210200141086a20032902083702002003410036020420034200370208200210d6011a0c010b410041a4d60010000b200341106a24000b7601027f230041106b220224002002410036020020002002107c1a2001200228020010e70102402001280200220320012802042201460d00034020022000360204200220033602082002200341346a36020c200241086a200241046a10e801200341386a22032001470d000b0b200241106a240020000bad0101047f230041106b2202240002400240200120002802042203200028020022046b41386d22054d0d002000200120056b10e9010c010b200120054f0d00024020032004200141386c6a2204460d00200341486a210103400240200141306a22052802002203417f460d002002410f6a2001200341027441d8d5006a2802001102000b2005417f36020020012004472105200141486a210120050d000b0b200020043602040b200241106a24000b4d01037f230041106b2202240020002802002103200128020021042002410036020c20042002410c6a107c1a20042003200228020c10f501200128020020002802041091011a200241106a24000be40101057f230041206b2202240002400240024020002802082203200028020422046b41386d2001490d00034020044100413810011a2000200028020441386a22043602042001417f6a22010d000c020b0b2004200028020022056b41386d220620016a220441a592c9244f0d012002410c6a200320056b41386d220341017422052004200520044b1b41a492c92420034192c9a412491b2006200041086a10ea01220328020821040340200441004138100141386a21042001417f6a22010d000b200320043602082000200310eb01200310ec011a0b200241206a24000f0b2000103f000b6701017f410021042000410036020c200041106a2003360200024002402001450d00200141a592c9244f0d01200141386c102721040b2000200436020020002004200241386c6a220336020820002004200141386c6a36020c2000200336020420000f0b1003000b6d01017f200041086a20002802002000280204200141046a10ed01200028020021022000200128020436020020012002360204200028020421022000200128020836020420012002360208200028020821022000200128020c3602082001200236020c200120012802043602000b1c01017f200010ee01024020002802002201450d00200110280b20000baf0101067f230041106b22042400024020022001460d00200241486a2102200328020021050340200541486a220641003a0000200641306a2207417f3602000240200241306a22082802002209417f460d002004410f6a20062002200941027441f0d5006a280200110300200720082802003602000b2005417c6a200241346a2f01003b01002003200328020041486a220536020020022001472106200241486a210220060d000b0b200441106a24000b7701057f230041106b2201240002402000280208220220002802042203460d0003402000200241486a22023602080240200241306a22042802002205417f460d002001410f6a2002200541027441d8d5006a280200110200200028020821020b2004417f36020020022003470d000b0b200141106a24000b0b0020012002412110041a0b0b0020012002412110041a0b480020012002412210042201412c6a2002412c6a28020036020020012002290224370224200241246a2101410021020340200120026a4100360200200241046a2202410c470d000b0b0b0020012002412110041a0b3c0020012002290200370200200141186a200241186a290200370200200141106a200241106a290200370200200141086a200241086a2902003702000b130020012002290200370200200242003702000b7f01017f230041306b220324000240024020020d0041002102034020002003410e6a20026a10761a200241016a22024121470d000b024020012802302202417f460d002003412f6a2001200241027441d8d5006a2802001102000b20012003410e6a4121100441003602300c010b20002001200210f6010b200341306a24000b820101017f230041306b220324000240024020024101470d0041002102034020002003410e6a20026a10761a200241016a22024121470d000b024020012802302202417f460d002003412f6a2001200241027441d8d5006a2802001102000b20012003410e6a4121100441013602300c010b20002001200210f7010b200341306a24000ba00201027f230041c0006b220324000240024020024102470d00200341386a410036020020034200370230412421022003410c6a41246a210403402003410c6a20026a4100360200200241046a22024130470d000b41002102034020002003410c6a20026a10761a200241016a22024121470d000b20002003412d6a10f801200410cd011a024020012802302202417f460d002003413f6a2001200241027441d8d5006a2802001102000b20012003410c6a412210042200412c6a200441086a280200360200200020042902003702244124210203402003410c6a20026a4100360200200241046a22024130470d000b2000410236023020032d0030410171450d01200341386a28020010280c010b20002001200210f9010b200341c0006a24000b3d01017f0240200028020820002802042202470d00410041c0d4001000200028020421020b20012002410110041a2000200028020441016a36020420000b820101017f230041306b220324000240024020024103470d0041002102034020002003410e6a20026a10761a200241016a22024121470d000b024020012802302202417f460d002003412f6a2001200241027441d8d5006a2802001102000b20012003410e6a4121100441033602300c010b20002001200210fa010b200341306a24000bbc0101017f230041306b220324000240024020024104470d0041002102034020002003410f6a20026a10761a200241016a22024120470d000b024020012802302202417f460d002003412f6a2001200241027441d8d5006a2802001102000b2001200329000f37000020014104360230200141186a2003410f6a41186a290000370000200141106a2003410f6a41106a290000370000200141086a2003410f6a41086a2900003700000c010b20002001200210fb010b200341306a24000b840101017f230041106b220324000240024020024105470d00200342003702042000200341046a10fc011a024020012802302202417f460d002003410f6a2001200241027441d8d5006a2802001102000b200120032902043702002001410536023020034200370204200341046a10de011a0c010b410041a4d60010000b200341106a24000be30102037f017e230041106b220224002000200241086a10761a0240024020022d0008450d000240200128020022030d0041ec00102722034190d600360200200342003702042003410c6a410041e000100121042001290200210520012004360200200120033602042002420037020020022005370208200241086a10de011a200210de011a200128020021030b4100210103402000200320016a10761a200141016a220141e000470d000c020b0b20012902002105200142003702002002420037020020022005370208200241086a10de011a200210de011a0b200241106a240020000b08002000103c10280b02000b0600200010280b800101057f230041106b2201240002402000280204220220002802002203460d00200241486a210203400240200241306a22042802002205417f460d002001410f6a2002200541027441d8d5006a2802001102000b2004417f360200200241786a2104200241406a210220042003470d000b0b20002003360204200141106a24000be60101057f230041206b2202240002400240024020002802082203200028020422046b4106752001490d0003402004410041c00010011a2000200028020441c0006a22043602042001417f6a22010d000c020b0b2004200028020022056b410675220620016a220441808080204f0d012002410c6a200320056b220341057522052004200520044b1b41ffffff1f200341c0ffffff07491b2006200041086a1082022203280208210403402004410041c000100141c0006a21042001417f6a22010d000b200320043602082000200310830220031084021a0b200241206a24000f0b2000103f000b6701017f410021042000410036020c200041106a2003360200024002402001450d00200141808080204f0d012001410674102721040b200020043602002000200420024106746a22033602082000200420014106746a36020c2000200336020420000f0b1003000b6d01017f200041086a20002802002000280204200141046a108502200028020021022000200128020436020020012002360204200028020421022000200128020836020420012002360208200028020821022000200128020c3602082001200236020c200120012802043602000b1c01017f2000108602024020002802002201450d00200110280b20000bb10101057f230041106b22042400024020022001460d00200241406a2102200328020021050340200541406a22052002290300370300200541386a2206417f360200200541086a220541003a00000240200241386a22072802002208417f460d002004410f6a2005200241086a200841027441f0d5006a280200110300200620072802003602000b2003200328020041406a220536020020022001472106200241406a210220060d000b0b200441106a24000b7e01067f230041106b2201240002402000280208220220002802042203460d0003402000200241406a22043602080240200441386a22052802002206417f460d002001410f6a200241486a200641027441d8d5006a280200110200200028020821040b2005417f3602002004210220042003470d000b0b200141106a24000bab040020001043024020012000520d00024002400240024002400240024002400240200242ffffff95cdebd4d942550d000240200242fffffffffff698d942550d0002402002428fa9d9d9dd8c99d6ba7f550d00200242808080e8b2edc0d38b7f510d032002428080f9d4a98499dc9a7f520d0a20012001106f0f0b20024290a9d9d9dd8c99d6ba7f510d0320024280808080daac9bd6ba7f520d09200120011092010f0b0240200242ffffffffd3c4a2d942550d002002428080808080f798d942510d042002428080b8f6a4979ad942520d0920012001107f0f0b20024280808080d4c4a2d942510d04200242f0aadf8bcde9add942520d0820012001108b010f0b0240200242ffffacd68db8baf154550d000240200242ffdfde8293fad6d942550d0020024280808096cdebd4d942510d0620024280808080b6f7d6d942520d0920012001107e0f0b20024280e0de8293fad6d942510d06200242808080c093fad6d942520d08200120011081010f0b0240200242ffffffcfb2b3bb9932550d002002428080add68db8baf154510d072002428080add68d959ba955520d082001200110710f0b02402002428080add68d95abd1ca00510d00200242808080d0b2b3bb9932520d08200120011093010f0b2001200110720f0b2001200110730f0b200120011095010f0b20012001107a0f0b2001200110750f0b20012001108e010f0b200120011086010f0b2001200110740f0b2001428080808080c0bad847510d0041004201101d0b0b0d00101e2000200120021087020b0b971706004180c0000b4a6661696c656420746f20616c6c6f6361746520706167657300656e636f756e7465726564206e6f6e2d62617365363420636861726163746572005055425f424c535f00000000000000000041cac0000bdf0200000000000030303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839396461746173747265616d20617474656d7074656420746f20777269746520706173742074686520656e6400000100000002000000030000000400000005000000060000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000700000008000000090000000a0000000b0000000c00000000000000000041a9c3000b81080000000000000000000000020000000300000005000000070000000b0000000d0000001100000013000000170000001d0000001f00000025000000290000002b0000002f000000350000003b0000003d0000004300000047000000490000004f00000053000000590000006100000065000000670000006b0000006d000000710000007f00000083000000890000008b00000095000000970000009d000000a3000000a7000000ad000000b3000000b5000000bf000000c1000000c5000000c7000000d3000000010000000b0000000d0000001100000013000000170000001d0000001f00000025000000290000002b0000002f000000350000003b0000003d0000004300000047000000490000004f00000053000000590000006100000065000000670000006b0000006d00000071000000790000007f00000083000000890000008b0000008f00000095000000970000009d000000a3000000a7000000a9000000ad000000b3000000b5000000bb000000bf000000c1000000c5000000c7000000d1000000404040404040404040404040404040404040404040404040404040404040404040404040404040404040403e4040403f3435363738393a3b3c3d40404040404040000102030405060708090a0b0c0d0e0f101112131415161718194040404040401a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040403e40403435363738393a3b3c3d40404040404040000102030405060708090a0b0c0d0e0f10111213141516171819404040403f401a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132334040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404077726f6e6720656e636f64656420737472696e672073697a65005349475f424c535f00424c535f5349475f424c53313233383147325f584d443a5348412d3235365f535357555f524f5f4e554c5f00424c535f504f505f424c53313233383147325f584d443a5348412d3235365f535357555f524f5f504f505f0041aacb000b820800bbc622db0af03afbef1a7af93fe8556c58ac1b173f3a4ea105b974974f8c68c30faca94f8c63952694d79731a7d3f117cac239b9d6dc54ad1b75cb0eba386f4e3642accad5b95566c907b51def6a8167f2212ecfc8767daaa845d555681d4d116e756d626572206f662066696e616c697a657273206578636565647320746865206d6178696d756d20616c6c6f7765640072657175697265206174206c65617374206f6e652066696e616c697a6572005055425f424c53005349475f424c530046696e616c697a6572206465736372697074696f6e2067726561746572207468616e206d617820616c6c6f7765642073697a65007075626c6963206b65792073686f756c642073746172742077697468205055425f424c530070726f6f66206f6620706f7373657373696f6e207369676e61747572652073686f756c642073746172742077697468205349475f424c530073756d206f662077656967687473206361757365732075696e7436345f74206f766572666c6f77006475706c6963617465207075626c6963206b65790070726f6f66206f6620706f7373657373696f6e206661696c65640066696e616c697a657220706f6c696379207468726573686f6c64206d7573742062652067726561746572207468616e2068616c66206f66207468652073756d206f662074686520776569676874732c20616e64206c657373207468616e206f7220657175616c20746f207468652073756d206f66207468652077656967687473006665617475726520646967657374206163746976617465643a20000a0070726f746f636f6c2066656174757265206973206e6f7420616374697661746564004b5620777269746520726566757365640062655f6b65795f73747265616d3a206b657920746f6f206c61726765006461746173747265616d20617474656d7074656420746f20777269746520706173742074686520656e6400656e636f64656420626173653634206b657920697320746f6f2073686f72740062617365363420656e636f6465642074797065206d75737420626567696e2066726f6d20636f72726573706f6e64696e6720707265666978006465636f6465642073697a65200020646f65736e2774206d61746368207374727563747572652073697a652000202b20636865636b73756d2000636865636b73756d206f662073747275637475726520646f65736e2774206d6174636800982f8a4291443771cffbc0b5a5dbb5e95bc25639f111f159a4823f92d55e1cab98aa07d8015b8312be853124c37d0c55745dbe72feb1de80a706dc9b74f19bc1c1699be48647beefc69dc10fcca10c246f2ce92daa84744adca9b05cda88f97652513e986dc631a8c82703b0c77f59bff30be0c64791a7d55163ca0667292914850ab72738211b2e0041acd3000bba03fc6d2c4d130d385354730a65bb0a6a762ec9c281852c7292a1e8bfa24b661aa8708b4bc2a3516cc719e892d1240699d685350ef470a06a1016c1a419086c371e4c774827b5bcb034b30c1c394aaad84e4fca9c5bf36f2e68ee828f746f63a5781478c8840802c78cfaffbe90eb6c50a4f7a3f9bef27871c67075626c6963206b65792068617320612077726f6e672073697a65006461746173747265616d20617474656d7074656420746f207265616420706173742074686520656e640048797065727669736f722072657475726e656420756e657870656374656420636f64652068617368207374727563742076657273696f6e0067657400616374696f6e206461746120686173206279746573206c6566742061667465722074686520617267756d656e747300000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e00000000000000000000001f00000020000000210000002200000023000000696e76616c69642076617269616e7420696e64657800756e6578706563746564206572726f7220696e2066697865645f627974657320636f6e7374727563746f72000041000b04002d00000001d00f010020244b88de7f0553a01caabbc94676a254bc7251a2c777815e16b8ce7e749103bb0566758077f667ae4c336aa50fb29f0ee31636083eb89f35a6b874cc2afd71270000a315868574670200247d62d500000000010000000000eab0c700000000b863b2c2010000000000eab0c700000000a8ed3232f0140000000000eab0c7e6140e737973696f3a3a6162692f312e320117626c6f636b5f7369676e696e675f617574686f726974792276617269616e745f626c6f636b5f7369676e696e675f617574686f726974795f76301e086162695f686173680004056f776e6572046e616d6504686173680b636865636b73756d3235360a757064617465645f61740a74696d655f706f696e7409626c6f636b5f6e756d0675696e7433320b616269686173685f6b65790001056f776e65720675696e74363408616374697661746500010e666561747572655f6469676573740b636865636b73756d32353609617574686f726974790003097468726573686f6c640675696e743332046b6579730c6b65795f7765696768745b5d086163636f756e7473197065726d697373696f6e5f6c6576656c5f7765696768745b5d1a626c6f636b5f7369676e696e675f617574686f726974795f76300002097468726573686f6c640675696e743332046b6579730c6b65795f7765696768745b5d15626c6f636b636861696e5f706172616d65746572730012136d61785f626c6f636b5f6e65745f75736167650675696e7436341a7461726765745f626c6f636b5f6e65745f75736167655f7063740675696e743332196d61785f7472616e73616374696f6e5f6e65745f75736167650675696e743332106e65745f75736167655f6c65657761790675696e743332136d61785f626c6f636b5f6370755f75736167650675696e7433321a7461726765745f626c6f636b5f6370755f75736167655f7063740675696e743332196d61785f7472616e73616374696f6e5f6370755f75736167650675696e743332196d696e5f7472616e73616374696f6e5f6370755f75736167650675696e743332186d61785f7472616e73616374696f6e5f6c69666574696d650675696e743332156d61785f7472616e73616374696f6e5f64656c61790675696e743332166d61785f696e6c696e655f616374696f6e5f73697a650675696e743332176d61785f696e6c696e655f616374696f6e5f64657074680675696e743136136d61785f617574686f726974795f64657074680675696e7431361c6d61785f616374696f6e5f72657475726e5f76616c75655f73697a650675696e7433320f6d61785f6b765f6b65795f73697a650675696e743332116d61785f6b765f76616c75655f73697a650675696e743332196d61785f6b765f7365636f6e646172795f6b65795f73697a650675696e743332126e6f746966795f6370755f73746970656e640675696e74333209636f64655f686173680004056f776e6572046e616d6504686173680b636865636b73756d3235360a757064617465645f61740a74696d655f706f696e7409626c6f636b5f6e756d0675696e7433320c636f6465686173685f6b65790001056f776e65720675696e7436340a64656c657465617574680002076163636f756e74046e616d650a7065726d697373696f6e046e616d651366696e616c697a65725f617574686f7269747900040b6465736372697074696f6e06737472696e67067765696768740675696e7436340a7075626c69635f6b657906737472696e6703706f7006737472696e671066696e616c697a65725f706f6c6963790002097468726573686f6c640675696e7436340a66696e616c697a6572731566696e616c697a65725f617574686f726974795b5d0a6b65795f7765696768740002036b65790a7075626c69635f6b6579067765696768740675696e743136086c696e6b617574680004076163636f756e74046e616d6504636f6465046e616d650474797065046e616d650b726571756972656d656e74046e616d650a6e65776163636f756e7400040763726561746f72046e616d65046e616d65046e616d65056f776e657209617574686f726974790661637469766509617574686f72697479107065726d697373696f6e5f6c6576656c0002056163746f72046e616d650a7065726d697373696f6e046e616d65177065726d697373696f6e5f6c6576656c5f77656967687400020a7065726d697373696f6e107065726d697373696f6e5f6c6576656c067765696768740675696e7431361270726f64756365725f617574686f7269747900020d70726f64756365725f6e616d65046e616d6509617574686f7269747917626c6f636b5f7369676e696e675f617574686f726974790c70726f64756365725f6b657900020d70726f64756365725f6e616d65046e616d6511626c6f636b5f7369676e696e675f6b65790a7075626c69635f6b65790c72657161637469766174656400010e666561747572655f6469676573740b636865636b73756d323536077265716175746800010466726f6d046e616d65067365746162690002076163636f756e74046e616d65036162690562797465730a736574616c696d6974730004076163636f756e74046e616d650972616d5f627974657305696e7436340a6e65745f77656967687405696e7436340a6370755f77656967687405696e74363407736574636f64650004076163636f756e74046e616d6506766d747970650575696e743809766d76657273696f6e0575696e743804636f64650562797465730c73657466696e616c697a657200011066696e616c697a65725f706f6c6963791066696e616c697a65725f706f6c69637909736574706172616d73000106706172616d7315626c6f636b636861696e5f706172616d657465727307736574707269760002076163636f756e74046e616d650769735f707269760575696e74380b73657470726f646b6579730001087363686564756c650e70726f64756365725f6b65795b5d0873657470726f64730001087363686564756c651470726f64756365725f617574686f726974795b5d0a756e6c696e6b617574680003076163636f756e74046e616d6504636f6465046e616d650474797065046e616d650a757064617465617574680004076163636f756e74046e616d650a7065726d697373696f6e046e616d6506706172656e74046e616d65046175746809617574686f72697479100000002a9bed3232086163746976617465000040cbdaa8aca24a0a64656c65746561757468000000002d6b03a78b086c696e6b617574680000409e9a2264b89a0a6e65776163636f756e7400905436db6564acba0c72657161637469766174656400000000a0656dacba07726571617574680000000000b863b2c206736574616269000000ce4eba68b2c20a736574616c696d6974730000000040258ab2c207736574636f64650070d577d14cb7b2c20c73657466696e616c697a6572000000c0d25c53b3c209736574706172616d730000000060bb5bb3c207736574707269760000b05730d15bb3c20b73657470726f646b6579730000000038d15bb3c20873657470726f6473000040cbdac0e9e2d40a756e6c696e6b61757468000040cbdaa86c52d50a75706461746561757468000207616269686173680369363401056f776e6572010675696e743634086162695f6861736826c10008636f6465686173680369363401056f776e6572010675696e74363409636f64655f68617368aa3f00000000012276617269616e745f626c6f636b5f7369676e696e675f617574686f726974795f7630011a626c6f636b5f7369676e696e675f617574686f726974795f7630000000000000 0100000000000000010000008fa63766549cb5a1f5fc2a915982c6fd2f1297dd40043d85c97ee4fb4e3e283f86cd31576daabfaac772e248b9f1207e3260bebc46838ea1961482cfe47901e701000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f598000000007cbda004e0d49fa87ed9a7b63156b48d64dee3ac1265987cfcee5e81b72a5cba0001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 DMLOG START_BLOCK 4 DMLOG CREATION_OP ROOT 0 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":3,"value_ex":259606,"consumed":1},"cpu_usage":{"last_ordinal":3,"value_ex":24885,"consumed":101},"ram_usage":423424} -DMLOG TRX_OP CREATE onblock d64b4ab3bf6f9e34ba6baece10ece621b2087500c8d349d06f7b161146ffa531 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274020000000000000000eab0c70000000261e1e9fd247d62d5d0659aec25d2501fb9a24d489439cce4a807c56a38fc2266fee5def676c7951b9900d4fc104b9b7bd7ba7efb41440c2c4f26087000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 -DMLOG APPLIED_TRANSACTION 4 d64b4ab3bf6f9e34ba6baece10ece621b2087500c8d349d06f7b161146ffa53104000000030000000100000004db81f6d4d29bf7c04125670b78e0e1b4a83dfd956371d5d4d34d595c010164640000000000000000000000000000000001010000010000000000eab0c7c1595fa7915266eef10105ceb53e606a6eb01611cbbd5911cc63fcd3c12bf3f005000000000000000500000000000000010000000000eab0c7050000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274020000000000000000eab0c70000000261e1e9fd247d62d5d0659aec25d2501fb9a24d489439cce4a807c56a38fc2266fee5def676c7951b9900d4fc104b9b7bd7ba7efb41440c2c4f26087000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001640000d64b4ab3bf6f9e34ba6baece10ece621b2087500c8d349d06f7b161146ffa53104000000030000000100000004db81f6d4d29bf7c04125670b78e0e1b4a83dfd956371d5d4d34d595c00000000000000 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":3,"value_ex":260172,"consumed":1},"cpu_usage":{"last_ordinal":3,"value_ex":24885,"consumed":101},"ram_usage":424170} +DMLOG TRX_OP CREATE onblock cd0b705cdb7917f2d6fb63374c8f93882c72ac2fb956d47cd7325de4ecefbf96 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274020000000000000000eab0c70000000261e1e9fd247d62d5d0659aec25d2501fb9a24d489439cce4a807c56a02601c2c3f08326bef7fa9099623110a51a09253b78f8f44f5b634607301f70000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 +DMLOG APPLIED_TRANSACTION 4 cd0b705cdb7917f2d6fb63374c8f93882c72ac2fb956d47cd7325de4ecefbf960400000003000000010000000457ff5da8167250d310a4288628eb5fe90be08091e6d23c7abaf0f2bc010164640000000000000000000000000000000001010000010000000000eab0c736e5754f7419c8f603c42248d2d46c66465f2ff68c4e5d01884c78d45b6a96fa05000000000000000500000000000000010000000000eab0c7050000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274020000000000000000eab0c70000000261e1e9fd247d62d5d0659aec25d2501fb9a24d489439cce4a807c56a02601c2c3f08326bef7fa9099623110a51a09253b78f8f44f5b634607301f70000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001640000cd0b705cdb7917f2d6fb63374c8f93882c72ac2fb956d47cd7325de4ecefbf960400000003000000010000000457ff5da8167250d310a4288628eb5fe90be08091e6d23c7abaf0f2bc00000000000000 DMLOG CREATION_OP ROOT 0 DMLOG PERM_OP INS 0 9 {"parent":0,"owner":"alice","name":"owner","last_updated":"2025-01-01T00:00:01.500","auth":{"threshold":1,"keys":[{"key":"SYS6JvuLaCqV8qHbSqUBVRPMo9N7V3vgE8YqHmweG568YmTDJ3opq","weight":1}],"accounts":[{"permission":{"actor":"alice","permission":"sysio.code"},"weight":1}]}} DMLOG PERM_OP INS 0 10 {"parent":9,"owner":"alice","name":"active","last_updated":"2025-01-01T00:00:01.500","auth":{"threshold":1,"keys":[{"key":"SYS8d5yGFrYpdXW1SUmaavRZKm5X7Bp9jK634JABCYPciwTkm7Wv2","weight":1}],"accounts":[{"permission":{"actor":"alice","permission":"sysio.code"},"weight":1}]}} DMLOG RLIMIT_OP ACCOUNT_LIMITS INS {"owner":"alice","net_weight":-1,"cpu_weight":-1,"ram_bytes":-1} DMLOG RLIMIT_OP ACCOUNT_USAGE INS {"owner":"alice","net_usage":{"last_ordinal":0,"value_ex":0,"consumed":0},"cpu_usage":{"last_ordinal":0,"value_ex":0,"consumed":0},"ram_usage":0} DMLOG RAM_OP 0 alice account add newaccount alice 1008 1008 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":3,"value_ex":261163,"consumed":270},"cpu_usage":{"last_ordinal":3,"value_ex":36460,"consumed":2101},"ram_usage":423424} -DMLOG APPLIED_TRANSACTION 4 3e1f4f6c579f38518315e4e4896dba6f145fdeda618d14faa54bf05c8098200004000000030000000100000004db81f6d4d29bf7c04125670b78e0e1b4a83dfd956371d5d4d34d595c0101d00fd00f00000000000000000d0100000000000001010000010000000000eab0c79330a38668eed8ba2aa8fe5dbcfe039763cfecc3bd770f65a3c32fee7303160a06000000000000000600000000000000010000000000eab0c7060000000000000001010000000000eab0c70000000000eab0c700409e9a2264b89a010000000000eab0c700000000a8ed323288010000000000eab0c70000000000855c3401000000010002bb30f6894f29bb6fca635b1df728ad77e48fdd6123ce5e4455b0f71e072e7df80100010000000000855c3400804a1401eab0c7010001000000010003ebcf44b45a71d4f225768f602d1e2e2b25ef779ee9897fe744bf1a16e85423d50100010000000000855c3400804a1401eab0c70100000000000000000001d00f018d02003e1f4f6c579f38518315e4e4896dba6f145fdeda618d14faa54bf05c8098200004000000030000000100000004db81f6d4d29bf7c04125670b78e0e1b4a83dfd956371d5d4d34d595c010000000000855c34f003000000000000000000000000 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":3,"value_ex":261729,"consumed":270},"cpu_usage":{"last_ordinal":3,"value_ex":36460,"consumed":2101},"ram_usage":424170} +DMLOG APPLIED_TRANSACTION 4 00caba4ee48a37587d400d7e505784356abdc8687fb08e2a775acab16fdc114e0400000003000000010000000457ff5da8167250d310a4288628eb5fe90be08091e6d23c7abaf0f2bc0101d00fd00f00000000000000000d0100000000000001010000010000000000eab0c79330a38668eed8ba2aa8fe5dbcfe039763cfecc3bd770f65a3c32fee7303160a06000000000000000600000000000000010000000000eab0c7060000000000000001010000000000eab0c70000000000eab0c700409e9a2264b89a010000000000eab0c700000000a8ed323288010000000000eab0c70000000000855c3401000000010002bb30f6894f29bb6fca635b1df728ad77e48fdd6123ce5e4455b0f71e072e7df80100010000000000855c3400804a1401eab0c7010001000000010003ebcf44b45a71d4f225768f602d1e2e2b25ef779ee9897fe744bf1a16e85423d50100010000000000855c3400804a1401eab0c70100000000000000000001d00f018d020000caba4ee48a37587d400d7e505784356abdc8687fb08e2a775acab16fdc114e0400000003000000010000000457ff5da8167250d310a4288628eb5fe90be08091e6d23c7abaf0f2bc010000000000855c34f003000000000000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG PERM_OP INS 0 11 {"parent":10,"owner":"alice","name":"test1","last_updated":"2025-01-01T00:00:01.500","auth":{"threshold":1,"keys":[],"accounts":[{"permission":{"actor":"sysio","permission":"active"},"weight":1}]}} DMLOG RAM_OP 0 11 auth add updateauth_create alice 1264 256 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":3,"value_ex":262205,"consumed":450},"cpu_usage":{"last_ordinal":3,"value_ex":48035,"consumed":4101},"ram_usage":423424} -DMLOG APPLIED_TRANSACTION 4 ff732a05df2c65da9bb2e01964b69e0fc351d3647d4f55715c6f36c1f104a68b04000000030000000100000004db81f6d4d29bf7c04125670b78e0e1b4a83dfd956371d5d4d34d595c0101d00fd00f0000000000000000b40000000000000001010000010000000000eab0c7e358b338a24f75fa2e432608876bfc8f6e0cff3db6db1cf61cccf6ac0bb0b10207000000000000000700000000000000010000000000855c34010000000000000001010000000000eab0c70000000000eab0c70040cbdaa86c52d5010000000000855c3400000000a8ed3232300000000000855c34000000008090b1ca00000000a8ed32320100000000010000000000eab0c700000000a8ed32320100000000000000000001d00f01b40100ff732a05df2c65da9bb2e01964b69e0fc351d3647d4f55715c6f36c1f104a68b04000000030000000100000004db81f6d4d29bf7c04125670b78e0e1b4a83dfd956371d5d4d34d595c010000000000855c340001000000000000000000000000 -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":3,"value_ex":373833334,"consumed":44860},"average_block_cpu_usage":{"last_ordinal":3,"value_ex":34993056,"consumed":4101},"pending_net_usage":449,"pending_cpu_usage":4100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1050675,"virtual_cpu_limit":200400} -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":4,"value_ex":374459723,"consumed":820},"average_block_cpu_usage":{"last_ordinal":4,"value_ex":68868114,"consumed":4135},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1051726,"virtual_cpu_limit":200600} -DMLOG ACCEPTED_BLOCK_V2 00000004db81f6d4d29bf7c04125670b78e0e1b4a83dfd956371d5d4d34d595c 4 1 030000000000000000eab0c700000003f59d37dbcd0eca11fe31f0d96f99c331f73a937c0529569c90bb2414691defef54bda206376f4cd907f5e0c048cf4e70423993ca64e300d00a2787ce00000000000000000000000000000000000000000000000000000000000000000100000000000000010020b459ad38e943442d86bef9dadb756fd58c333a4cb8a9235b168e4011cc729405113c40f7b7e651cbfeb2d73d1e778b6518be5403f8a42170a98dae9b28e8e9250201d00f01001fcdd180e178280c6d2b06878f15bcaab565e53c523d49bb019b01ef5151773e3415dfdc2519d26a837d5730effaa2373e0aed02d8d94c66925e853f4a8879c4aa0000bb01878574670300cd0eca1100000000010000000000eab0c700409e9a2264b89a010000000000eab0c700000000a8ed323288010000000000eab0c70000000000855c3401000000010002bb30f6894f29bb6fca635b1df728ad77e48fdd6123ce5e4455b0f71e072e7df80100010000000000855c3400804a1401eab0c7010001000000010003ebcf44b45a71d4f225768f602d1e2e2b25ef779ee9897fe744bf1a16e85423d50100010000000000855c3400804a1401eab0c701000001d00f01001f09c2adceb2d2158c8736fbcd5b60b6a8d1f2e1763875c0fa985ccae824ca58e826866a4557e8fedda21e92b67f1d1b04526fff0b4c2b3098aaac6310a09cdbda000062878574670300cd0eca1100000000010000000000eab0c70040cbdaa86c52d5010000000000855c3400000000a8ed3232300000000000855c34000000008090b1ca00000000a8ed32320100000000010000000000eab0c700000000a8ed32320100000000 010000000000000001000000db1a52785e404e2a5b31f46d1cef38c066202ce2cbc80dd5270b2d6956e1890d2c6cd728a620df0d6e69072712bbfdddd28ee7dde7ed2bdeac3e3d150111b52e01000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f59800000000d0b37185028e2a21c08275d8c34e0ac65c28a973264966c8068422ad3eda78d60001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":3,"value_ex":262771,"consumed":450},"cpu_usage":{"last_ordinal":3,"value_ex":48035,"consumed":4101},"ram_usage":424170} +DMLOG APPLIED_TRANSACTION 4 621150b1320b9d88cf5416ac9807417e390bcd917e60e43edf7349f12222d8250400000003000000010000000457ff5da8167250d310a4288628eb5fe90be08091e6d23c7abaf0f2bc0101d00fd00f0000000000000000b40000000000000001010000010000000000eab0c7e358b338a24f75fa2e432608876bfc8f6e0cff3db6db1cf61cccf6ac0bb0b10207000000000000000700000000000000010000000000855c34010000000000000001010000000000eab0c70000000000eab0c70040cbdaa86c52d5010000000000855c3400000000a8ed3232300000000000855c34000000008090b1ca00000000a8ed32320100000000010000000000eab0c700000000a8ed32320100000000000000000001d00f01b40100621150b1320b9d88cf5416ac9807417e390bcd917e60e43edf7349f12222d8250400000003000000010000000457ff5da8167250d310a4288628eb5fe90be08091e6d23c7abaf0f2bc010000000000855c340001000000000000000000000000 +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":3,"value_ex":374650000,"consumed":44958},"average_block_cpu_usage":{"last_ordinal":3,"value_ex":34993056,"consumed":4101},"pending_net_usage":449,"pending_cpu_usage":4100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1050675,"virtual_cpu_limit":200400} +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":4,"value_ex":375269583,"consumed":821},"average_block_cpu_usage":{"last_ordinal":4,"value_ex":68868114,"consumed":4135},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1051726,"virtual_cpu_limit":200600} +DMLOG ACCEPTED_BLOCK_V2 0000000457ff5da8167250d310a4288628eb5fe90be08091e6d23c7abaf0f2bc 4 1 030000000000000000eab0c70000000305fdee1bb22e7184e00096ba290ef81298fb4ac18449cdc73e493329a5183d56f6539bcf55c9fffe5918bbcb353a00274d540981c3b3510ba0b28972000000000000000000000000000000000000000000000000000000000000000001000000000000000100201077512fe5d57ce170e90612708cb190bffa8a7b04164e33ee652cedddfb381750b3b9725c01f0d25eefaef4b9e0dbe499cd4c027928c3707e7e583e7496c1a80201d00f01001f811f3ed64a7f11f0a9a27fdb7f44651de1641580d6470a59fe596df14e7c34b16be3e305a9062a29664748ca37435e9280953593b4c1c6355e8019a29ae6e7580000bb01878574670300b22e718400000000010000000000eab0c700409e9a2264b89a010000000000eab0c700000000a8ed323288010000000000eab0c70000000000855c3401000000010002bb30f6894f29bb6fca635b1df728ad77e48fdd6123ce5e4455b0f71e072e7df80100010000000000855c3400804a1401eab0c7010001000000010003ebcf44b45a71d4f225768f602d1e2e2b25ef779ee9897fe744bf1a16e85423d50100010000000000855c3400804a1401eab0c701000001d00f0100205f67c0cf808521c29526cdf7ecc801bac40c7d190a2e597d2705151d1e800f9340a255cecec26c7edf0dde31f0ae348894e0c1efbec831f31a62bc233d685e2e000062878574670300b22e718400000000010000000000eab0c70040cbdaa86c52d5010000000000855c3400000000a8ed3232300000000000855c34000000008090b1ca00000000a8ed32320100000000010000000000eab0c700000000a8ed32320100000000 01000000000000000100000088623f1cddc3eee305038247722e71ec86609d0fd7a2d8769d0c4a9ebda9d1ab5e4c507eb8a95882115cec457c7b89862acaf90098841ded0c480d9b3ed9157501000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f59800000000106b79742c53026bff1751458cec7b0166d1a6fa197556f9bb28c5dd3ee558f20001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 DMLOG START_BLOCK 5 DMLOG CREATION_OP ROOT 0 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":4,"value_ex":262203,"consumed":1},"cpu_usage":{"last_ordinal":4,"value_ex":48613,"consumed":101},"ram_usage":423424} -DMLOG TRX_OP CREATE onblock c249c5c1282c9d2512d7447627f4df4e5e1aff129be9fc9daede824697d526d6 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274030000000000000000eab0c700000003f59d37dbcd0eca11fe31f0d96f99c331f73a937c0529569c90bb2414691defef54bda206376f4cd907f5e0c048cf4e70423993ca64e300d00a2787ce00000000000000000000000000000000000000000000000000000000000000000100000000000000000000 -DMLOG APPLIED_TRANSACTION 5 c249c5c1282c9d2512d7447627f4df4e5e1aff129be9fc9daede824697d526d605000000040000000100000005615eed73ba5b30b20ca9b0c9e8fbc1d672fbf158841167789565a5b3010164640000000000000000000000000000000001010000010000000000eab0c7d3833c0b3ee1473deb71fb16a70752986b4e874036d0c393ed5ff8fe0a6f64b908000000000000000800000000000000010000000000eab0c7070000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274030000000000000000eab0c700000003f59d37dbcd0eca11fe31f0d96f99c331f73a937c0529569c90bb2414691defef54bda206376f4cd907f5e0c048cf4e70423993ca64e300d00a2787ce00000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001640000c249c5c1282c9d2512d7447627f4df4e5e1aff129be9fc9daede824697d526d605000000040000000100000005615eed73ba5b30b20ca9b0c9e8fbc1d672fbf158841167789565a5b300000000000000 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":4,"value_ex":262769,"consumed":1},"cpu_usage":{"last_ordinal":4,"value_ex":48613,"consumed":101},"ram_usage":424170} +DMLOG TRX_OP CREATE onblock 548e2b296a1c2931d8901a059bb75f78b82649988d309d34750488d17ba96b76 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274030000000000000000eab0c70000000305fdee1bb22e7184e00096ba290ef81298fb4ac18449cdc73e493329a5183d56f6539bcf55c9fffe5918bbcb353a00274d540981c3b3510ba0b2897200000000000000000000000000000000000000000000000000000000000000000100000000000000000000 +DMLOG APPLIED_TRANSACTION 5 548e2b296a1c2931d8901a059bb75f78b82649988d309d34750488d17ba96b760500000004000000010000000502bb1ef19375f22c9d29fe310438d5957155616adb5b86528e69c383010164640000000000000000000000000000000001010000010000000000eab0c729892dbd34138d8943d294462eaefd3026dc5f89b3b340d99127749832b25fcd08000000000000000800000000000000010000000000eab0c7070000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274030000000000000000eab0c70000000305fdee1bb22e7184e00096ba290ef81298fb4ac18449cdc73e493329a5183d56f6539bcf55c9fffe5918bbcb353a00274d540981c3b3510ba0b2897200000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001640000548e2b296a1c2931d8901a059bb75f78b82649988d309d34750488d17ba96b760500000004000000010000000502bb1ef19375f22c9d29fe310438d5957155616adb5b86528e69c38300000000000000 DMLOG CREATION_OP ROOT 0 DMLOG PERM_OP INS 0 12 {"parent":0,"owner":"bob","name":"owner","last_updated":"2025-01-01T00:00:02.000","auth":{"threshold":1,"keys":[{"key":"SYS6B3rHpc6dGawK1L5ume6nTb25usB8b1neMaw6nU5QBy2VSUF2V","weight":1}],"accounts":[{"permission":{"actor":"bob","permission":"sysio.code"},"weight":1}]}} DMLOG PERM_OP INS 0 13 {"parent":12,"owner":"bob","name":"active","last_updated":"2025-01-01T00:00:02.000","auth":{"threshold":1,"keys":[{"key":"SYS5mF6KuJY8NgNqzKS4oUjoq2q6n3txkprAhtjLb1gyi7nJ7QZLD","weight":1}],"accounts":[{"permission":{"actor":"bob","permission":"sysio.code"},"weight":1}]}} DMLOG RLIMIT_OP ACCOUNT_LIMITS INS {"owner":"bob","net_weight":-1,"cpu_weight":-1,"ram_bytes":-1} DMLOG RLIMIT_OP ACCOUNT_USAGE INS {"owner":"bob","net_usage":{"last_ordinal":0,"value_ex":0,"consumed":0},"cpu_usage":{"last_ordinal":0,"value_ex":0,"consumed":0},"ram_usage":0} DMLOG RAM_OP 0 bob account add newaccount bob 1008 1008 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":4,"value_ex":263760,"consumed":270},"cpu_usage":{"last_ordinal":4,"value_ex":60188,"consumed":2101},"ram_usage":423424} -DMLOG APPLIED_TRANSACTION 5 427b13bf4109f0a5d04822d28a8b1c1d2588de44eaa4cc504b9d13138a483a5f05000000040000000100000005615eed73ba5b30b20ca9b0c9e8fbc1d672fbf158841167789565a5b30101d00fd00f00000000000000000d0100000000000001010000010000000000eab0c7cd4f21944e1b0c11e1958707a5f1a1c324850d491088c2eeed01c0ddc596cc8a09000000000000000900000000000000010000000000eab0c7080000000000000001010000000000eab0c70000000000eab0c700409e9a2264b89a010000000000eab0c700000000a8ed323288010000000000eab0c70000000000000e3d01000000010002a94c5b37723d46f30769c86afe2b0bae5e018b2b6168f52a8bb95d50738efe970100010000000000000e3d00804a1401eab0c7010001000000010002733e5215e6a4c10d15d9259a96aceacd67108a33a3d1a1d91909f6a9c38a8db40100010000000000000e3d00804a1401eab0c70100000000000000000001d00f018d0200427b13bf4109f0a5d04822d28a8b1c1d2588de44eaa4cc504b9d13138a483a5f05000000040000000100000005615eed73ba5b30b20ca9b0c9e8fbc1d672fbf158841167789565a5b3010000000000000e3df003000000000000000000000000 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":4,"value_ex":264326,"consumed":270},"cpu_usage":{"last_ordinal":4,"value_ex":60188,"consumed":2101},"ram_usage":424170} +DMLOG APPLIED_TRANSACTION 5 bf9e7305ab77542bdf8dfd2c92c410511686b52a02fd8ee8422fbba350a776550500000004000000010000000502bb1ef19375f22c9d29fe310438d5957155616adb5b86528e69c3830101d00fd00f00000000000000000d0100000000000001010000010000000000eab0c7cd4f21944e1b0c11e1958707a5f1a1c324850d491088c2eeed01c0ddc596cc8a09000000000000000900000000000000010000000000eab0c7080000000000000001010000000000eab0c70000000000eab0c700409e9a2264b89a010000000000eab0c700000000a8ed323288010000000000eab0c70000000000000e3d01000000010002a94c5b37723d46f30769c86afe2b0bae5e018b2b6168f52a8bb95d50738efe970100010000000000000e3d00804a1401eab0c7010001000000010002733e5215e6a4c10d15d9259a96aceacd67108a33a3d1a1d91909f6a9c38a8db40100010000000000000e3d00804a1401eab0c70100000000000000000001d00f018d0200bf9e7305ab77542bdf8dfd2c92c410511686b52a02fd8ee8422fbba350a776550500000004000000010000000502bb1ef19375f22c9d29fe310438d5957155616adb5b86528e69c383010000000000000e3df003000000000000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG PERM_OP INS 0 14 {"parent":0,"owner":"carol","name":"owner","last_updated":"2025-01-01T00:00:02.000","auth":{"threshold":1,"keys":[{"key":"SYS5GPMSkwTUpWYr1kLyXbh2j6Fa4SrGDLE7MZfmYbKdKF96Jg2hF","weight":1}],"accounts":[{"permission":{"actor":"carol","permission":"sysio.code"},"weight":1}]}} DMLOG PERM_OP INS 0 15 {"parent":14,"owner":"carol","name":"active","last_updated":"2025-01-01T00:00:02.000","auth":{"threshold":1,"keys":[{"key":"SYS6YNqCMfToVXfE9FWCJBvXChfp5uXtb45yko8Uc33a89JhQTF6U","weight":1}],"accounts":[{"permission":{"actor":"carol","permission":"sysio.code"},"weight":1}]}} DMLOG RLIMIT_OP ACCOUNT_LIMITS INS {"owner":"carol","net_weight":-1,"cpu_weight":-1,"ram_bytes":-1} DMLOG RLIMIT_OP ACCOUNT_USAGE INS {"owner":"carol","net_usage":{"last_ordinal":0,"value_ex":0,"consumed":0},"cpu_usage":{"last_ordinal":0,"value_ex":0,"consumed":0},"ram_usage":0} DMLOG RAM_OP 0 carol account add newaccount carol 1008 1008 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":4,"value_ex":265317,"consumed":539},"cpu_usage":{"last_ordinal":4,"value_ex":71763,"consumed":4101},"ram_usage":423424} -DMLOG APPLIED_TRANSACTION 5 ebc653919f1e5295ce285c4af3667a4fe9f0fcff3d844de3f029004cf0976e1905000000040000000100000005615eed73ba5b30b20ca9b0c9e8fbc1d672fbf158841167789565a5b30101d00fd00f00000000000000000d0100000000000001010000010000000000eab0c7332d20f144c65a7ecb3209a341e724531d4637afaec4f38fc99c24638cee3cdd0a000000000000000a00000000000000010000000000eab0c7090000000000000001010000000000eab0c70000000000eab0c700409e9a2264b89a010000000000eab0c700000000a8ed323288010000000000eab0c7000000008048af410100000001000231b8025d8ccd3bbb454b5a924298d09d317cf4911f38f6010ff89bc244b32dae010001000000008048af4100804a1401eab0c7010001000000010002d9b973b59bc33dd6aafacec1a2e580cff5c68a04fa0cc0b982a51cfd3ec0a660010001000000008048af4100804a1401eab0c70100000000000000000001d00f018d0200ebc653919f1e5295ce285c4af3667a4fe9f0fcff3d844de3f029004cf0976e1905000000040000000100000005615eed73ba5b30b20ca9b0c9e8fbc1d672fbf158841167789565a5b301000000008048af41f003000000000000000000000000 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":4,"value_ex":265883,"consumed":539},"cpu_usage":{"last_ordinal":4,"value_ex":71763,"consumed":4101},"ram_usage":424170} +DMLOG APPLIED_TRANSACTION 5 6be9f6942c354a581b3f6d5141368adf37bfd281be402f068f7cb094d8c471550500000004000000010000000502bb1ef19375f22c9d29fe310438d5957155616adb5b86528e69c3830101d00fd00f00000000000000000d0100000000000001010000010000000000eab0c7332d20f144c65a7ecb3209a341e724531d4637afaec4f38fc99c24638cee3cdd0a000000000000000a00000000000000010000000000eab0c7090000000000000001010000000000eab0c70000000000eab0c700409e9a2264b89a010000000000eab0c700000000a8ed323288010000000000eab0c7000000008048af410100000001000231b8025d8ccd3bbb454b5a924298d09d317cf4911f38f6010ff89bc244b32dae010001000000008048af4100804a1401eab0c7010001000000010002d9b973b59bc33dd6aafacec1a2e580cff5c68a04fa0cc0b982a51cfd3ec0a660010001000000008048af4100804a1401eab0c70100000000000000000001d00f018d02006be9f6942c354a581b3f6d5141368adf37bfd281be402f068f7cb094d8c471550500000004000000010000000502bb1ef19375f22c9d29fe310438d5957155616adb5b86528e69c38301000000008048af41f003000000000000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG PERM_OP INS 0 16 {"parent":0,"owner":"charlie","name":"owner","last_updated":"2025-01-01T00:00:02.000","auth":{"threshold":1,"keys":[{"key":"SYS6PK3NNfQuX72hkGVZA7VvdE7ZkK6XSpaex8rqMx8BEFkEjzqUG","weight":1}],"accounts":[{"permission":{"actor":"charlie","permission":"sysio.code"},"weight":1}]}} DMLOG PERM_OP INS 0 17 {"parent":16,"owner":"charlie","name":"active","last_updated":"2025-01-01T00:00:02.000","auth":{"threshold":1,"keys":[{"key":"SYS68Ajgzq9njLeN1XdBUkBR4yQ5GXZLmMK2hUFgEaTqX4KySjNKB","weight":1}],"accounts":[{"permission":{"actor":"charlie","permission":"sysio.code"},"weight":1}]}} DMLOG RLIMIT_OP ACCOUNT_LIMITS INS {"owner":"charlie","net_weight":-1,"cpu_weight":-1,"ram_bytes":-1} DMLOG RLIMIT_OP ACCOUNT_USAGE INS {"owner":"charlie","net_usage":{"last_ordinal":0,"value_ex":0,"consumed":0},"cpu_usage":{"last_ordinal":0,"value_ex":0,"consumed":0},"ram_usage":0} DMLOG RAM_OP 0 charlie account add newaccount charlie 1008 1008 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":4,"value_ex":266874,"consumed":808},"cpu_usage":{"last_ordinal":4,"value_ex":83338,"consumed":6101},"ram_usage":423424} -DMLOG APPLIED_TRANSACTION 5 d362c80b26ff3888a665221bd1a53a5ae8e9693474e9218d00f973a982d3604205000000040000000100000005615eed73ba5b30b20ca9b0c9e8fbc1d672fbf158841167789565a5b30101d00fd00f00000000000000000d0100000000000001010000010000000000eab0c7bcde7e3233b39abb8db749965f57714c01867d26f1075d0e2606a1714f5473ed0b000000000000000b00000000000000010000000000eab0c70a0000000000000001010000000000eab0c70000000000eab0c700409e9a2264b89a010000000000eab0c700000000a8ed323288010000000000eab0c700000040b9784d4301000000010002c523f40a0b387b0518ee551ff9def9d961b3ad7d5aa7cb2741a466980c765fd501000100000040b9784d4300804a1401eab0c7010001000000010002a2c18841a6c8a4bacbee939dca70aaa21addf3a547e98a7b3a23b2b57345eeed01000100000040b9784d4300804a1401eab0c70100000000000000000001d00f018d0200d362c80b26ff3888a665221bd1a53a5ae8e9693474e9218d00f973a982d3604205000000040000000100000005615eed73ba5b30b20ca9b0c9e8fbc1d672fbf158841167789565a5b30100000040b9784d43f003000000000000000000000000 -DMLOG CREATION_OP ROOT 0 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":4,"value_ex":268518,"consumed":1092},"cpu_usage":{"last_ordinal":4,"value_ex":94913,"consumed":8101},"ram_usage":423424} -DMLOG APPLIED_TRANSACTION 5 c36ce857f1435552be334eaea61331e3e03551f27819c96a9e267cf9d48a2e1205000000040000000100000005615eed73ba5b30b20ca9b0c9e8fbc1d672fbf158841167789565a5b30101d00fd00f00000000000000001c0100000000000001010000010000000000eab0c7fc80ae0df804bb946f33e08001b36c9e815adcd78abb98ed481d3468eddff2ee0c000000000000000c00000000000000010000000000eab0c70b0000000000000001010000000000eab0c70000000000eab0c700000038d15bb3c2010000000000eab0c700000000a8ed32329701030000000000000e3d0001000000010002733e5215e6a4c10d15d9259a96aceacd67108a33a3d1a1d91909f6a9c38a8db40100000000008048af410001000000010002d9b973b59bc33dd6aafacec1a2e580cff5c68a04fa0cc0b982a51cfd3ec0a660010000000040b9784d430001000000010002a2c18841a6c8a4bacbee939dca70aaa21addf3a547e98a7b3a23b2b57345eeed0100000000000000000001d00f019c0200c36ce857f1435552be334eaea61331e3e03551f27819c96a9e267cf9d48a2e1205000000040000000100000005615eed73ba5b30b20ca9b0c9e8fbc1d672fbf158841167789565a5b300000000000000 -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":4,"value_ex":374459723,"consumed":820},"average_block_cpu_usage":{"last_ordinal":4,"value_ex":68868114,"consumed":4135},"pending_net_usage":1091,"pending_cpu_usage":8100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1051726,"virtual_cpu_limit":200600} -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":5,"value_ex":380430892,"consumed":1463},"average_block_cpu_usage":{"last_ordinal":5,"value_ex":135794213,"consumed":8169},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1052778,"virtual_cpu_limit":200800} -DMLOG ACCEPTED_BLOCK_V2 00000005615eed73ba5b30b20ca9b0c9e8fbc1d672fbf158841167789565a5b3 5 1 040000000000000000eab0c700000004db81f6d4d29bf7c04125670b78e0e1b4a83dfd956371d5d4d34d595cab812eaeafbc8ad665219d9f9581dfc79eee127357053221025305de73c1862e00000000000000000000000000000000000000000000000000000000000000000100000000000101000000040000000100000300000000000000000e3d0001000000010002733e5215e6a4c10d15d9259a96aceacd67108a33a3d1a1d91909f6a9c38a8db401000100000000008048af410001000000010002d9b973b59bc33dd6aafacec1a2e580cff5c68a04fa0cc0b982a51cfd3ec0a6600100020000000040b9784d430001000000010002a2c18841a6c8a4bacbee939dca70aaa21addf3a547e98a7b3a23b2b57345eeed01000001001f7ee31fa7217409afc6ec185c9f44ef0c667d18c743cfb8fc16971a9ab8c5f9250562de70661cfe08fb12c5ca8e7c97a26ef35502ae820a5663cfa71ff07df39c0401d00f010020fe0be6b81357c011dd559d84ec3517d26802a4a9dfc1d837659a28dc7d2f028b0a23b92c5eee81726275ba4b082ba9a02aba9b43db880de5becd69de7cbf4eae0000bb01878574670400d29bf7c000000000010000000000eab0c700409e9a2264b89a010000000000eab0c700000000a8ed323288010000000000eab0c70000000000000e3d01000000010002a94c5b37723d46f30769c86afe2b0bae5e018b2b6168f52a8bb95d50738efe970100010000000000000e3d00804a1401eab0c7010001000000010002733e5215e6a4c10d15d9259a96aceacd67108a33a3d1a1d91909f6a9c38a8db40100010000000000000e3d00804a1401eab0c701000001d00f010020702af1e6b87bdaeb82d564172dc207c8807615c673157aa71266c67827b013af6ec93b86c7651a59dca65fb9a439fd1b1d564f4bcb93668c6087e76b2f3a36e90000bb01878574670400d29bf7c000000000010000000000eab0c700409e9a2264b89a010000000000eab0c700000000a8ed323288010000000000eab0c7000000008048af410100000001000231b8025d8ccd3bbb454b5a924298d09d317cf4911f38f6010ff89bc244b32dae010001000000008048af4100804a1401eab0c7010001000000010002d9b973b59bc33dd6aafacec1a2e580cff5c68a04fa0cc0b982a51cfd3ec0a660010001000000008048af4100804a1401eab0c701000001d00f0100204ff2e70724971cfef44e02799a838f2451ce130a5f9bbaeef85d12f214bcb66b799b88a9cdbbf45d186869d6da80f9214326fbb3b5dbdfff3dc8a45f13d8a60a0000bb01878574670400d29bf7c000000000010000000000eab0c700409e9a2264b89a010000000000eab0c700000000a8ed323288010000000000eab0c700000040b9784d4301000000010002c523f40a0b387b0518ee551ff9def9d961b3ad7d5aa7cb2741a466980c765fd501000100000040b9784d4300804a1401eab0c7010001000000010002a2c18841a6c8a4bacbee939dca70aaa21addf3a547e98a7b3a23b2b57345eeed01000100000040b9784d4300804a1401eab0c701000001d00f0100208dc976aa55998b7456d8a12b5b85d1276790628454aef250ebcb0e4f05d040cc77dac82670e85883016e626898b5447a999e1ba49dae0f6166225856008eb5730000ca01878574670400d29bf7c000000000010000000000eab0c700000038d15bb3c2010000000000eab0c700000000a8ed32329701030000000000000e3d0001000000010002733e5215e6a4c10d15d9259a96aceacd67108a33a3d1a1d91909f6a9c38a8db40100000000008048af410001000000010002d9b973b59bc33dd6aafacec1a2e580cff5c68a04fa0cc0b982a51cfd3ec0a660010000000040b9784d430001000000010002a2c18841a6c8a4bacbee939dca70aaa21addf3a547e98a7b3a23b2b57345eeed0100000000 01000000000000000100000011b9ff22e04f4aaa335f26eece5d061112c0f33c7493685a4697768589b5a9341c26f8845bf8bfb7aaf2bca5520ab7cd2fe37c4649779782b2e15a82006ae6ed01000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f5980000000046f53331e06801a165d63c2810cf75373afda222160a3c673317b96e690947680001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":4,"value_ex":267440,"consumed":808},"cpu_usage":{"last_ordinal":4,"value_ex":83338,"consumed":6101},"ram_usage":424170} +DMLOG APPLIED_TRANSACTION 5 2d3206e510fcd0c63417aec345ef7b26586174ad2661fe967dd69d46f33f059a0500000004000000010000000502bb1ef19375f22c9d29fe310438d5957155616adb5b86528e69c3830101d00fd00f00000000000000000d0100000000000001010000010000000000eab0c7bcde7e3233b39abb8db749965f57714c01867d26f1075d0e2606a1714f5473ed0b000000000000000b00000000000000010000000000eab0c70a0000000000000001010000000000eab0c70000000000eab0c700409e9a2264b89a010000000000eab0c700000000a8ed323288010000000000eab0c700000040b9784d4301000000010002c523f40a0b387b0518ee551ff9def9d961b3ad7d5aa7cb2741a466980c765fd501000100000040b9784d4300804a1401eab0c7010001000000010002a2c18841a6c8a4bacbee939dca70aaa21addf3a547e98a7b3a23b2b57345eeed01000100000040b9784d4300804a1401eab0c70100000000000000000001d00f018d02002d3206e510fcd0c63417aec345ef7b26586174ad2661fe967dd69d46f33f059a0500000004000000010000000502bb1ef19375f22c9d29fe310438d5957155616adb5b86528e69c3830100000040b9784d43f003000000000000000000000000 +DMLOG CREATION_OP ROOT 0 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":4,"value_ex":269084,"consumed":1092},"cpu_usage":{"last_ordinal":4,"value_ex":94913,"consumed":8101},"ram_usage":424170} +DMLOG APPLIED_TRANSACTION 5 dcd77d23e0ba1505ce87664d47ad4baf6f17d69c23ca8393099dc46408e817350500000004000000010000000502bb1ef19375f22c9d29fe310438d5957155616adb5b86528e69c3830101d00fd00f00000000000000001c0100000000000001010000010000000000eab0c7fc80ae0df804bb946f33e08001b36c9e815adcd78abb98ed481d3468eddff2ee0c000000000000000c00000000000000010000000000eab0c70b0000000000000001010000000000eab0c70000000000eab0c700000038d15bb3c2010000000000eab0c700000000a8ed32329701030000000000000e3d0001000000010002733e5215e6a4c10d15d9259a96aceacd67108a33a3d1a1d91909f6a9c38a8db40100000000008048af410001000000010002d9b973b59bc33dd6aafacec1a2e580cff5c68a04fa0cc0b982a51cfd3ec0a660010000000040b9784d430001000000010002a2c18841a6c8a4bacbee939dca70aaa21addf3a547e98a7b3a23b2b57345eeed0100000000000000000001d00f019c0200dcd77d23e0ba1505ce87664d47ad4baf6f17d69c23ca8393099dc46408e817350500000004000000010000000502bb1ef19375f22c9d29fe310438d5957155616adb5b86528e69c38300000000000000 +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":4,"value_ex":375269583,"consumed":821},"average_block_cpu_usage":{"last_ordinal":4,"value_ex":68868114,"consumed":4135},"pending_net_usage":1091,"pending_cpu_usage":8100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1051726,"virtual_cpu_limit":200600} +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":5,"value_ex":381234003,"consumed":1464},"average_block_cpu_usage":{"last_ordinal":5,"value_ex":135794213,"consumed":8169},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1052778,"virtual_cpu_limit":200800} +DMLOG ACCEPTED_BLOCK_V2 0000000502bb1ef19375f22c9d29fe310438d5957155616adb5b86528e69c383 5 1 040000000000000000eab0c70000000457ff5da8167250d310a4288628eb5fe90be08091e6d23c7abaf0f2bc410b2951dc6d5704f8506ec2d7702771505f239a34cd62d5d3837acf2b96ac2600000000000000000000000000000000000000000000000000000000000000000100000000000101000000040000000100000300000000000000000e3d0001000000010002733e5215e6a4c10d15d9259a96aceacd67108a33a3d1a1d91909f6a9c38a8db401000100000000008048af410001000000010002d9b973b59bc33dd6aafacec1a2e580cff5c68a04fa0cc0b982a51cfd3ec0a6600100020000000040b9784d430001000000010002a2c18841a6c8a4bacbee939dca70aaa21addf3a547e98a7b3a23b2b57345eeed010000010020ace9e5b3662db158c46ab9c7b5b62978a8e38cf0b610ddbeacf03e34e2481fbb3cde2e0169fc33db71945d7040f9023f15b406c2237d1ca9b3520ca5966c02040401d00f01001f6fb22503edf532244b310dce98cc5606b2c669428eb0e2dfdfa675ca31b2ce135d015f5ac94885efbe0b8e05bbf78f115df5a132ddd1b87831bf9bec0024e7100000bb01878574670400167250d300000000010000000000eab0c700409e9a2264b89a010000000000eab0c700000000a8ed323288010000000000eab0c70000000000000e3d01000000010002a94c5b37723d46f30769c86afe2b0bae5e018b2b6168f52a8bb95d50738efe970100010000000000000e3d00804a1401eab0c7010001000000010002733e5215e6a4c10d15d9259a96aceacd67108a33a3d1a1d91909f6a9c38a8db40100010000000000000e3d00804a1401eab0c701000001d00f010020869e4c063419ffb9407ce3779ff6e4b3aed5b8b5cd16a846d2e9a02a05e059e72ac41b619ce1bd2344636a0f822db32e38c7cb1f13b1ac95fc874b053dabdafb0000bb01878574670400167250d300000000010000000000eab0c700409e9a2264b89a010000000000eab0c700000000a8ed323288010000000000eab0c7000000008048af410100000001000231b8025d8ccd3bbb454b5a924298d09d317cf4911f38f6010ff89bc244b32dae010001000000008048af4100804a1401eab0c7010001000000010002d9b973b59bc33dd6aafacec1a2e580cff5c68a04fa0cc0b982a51cfd3ec0a660010001000000008048af4100804a1401eab0c701000001d00f01001f76bb63eab2c12490a706f41e1e6546a361d18c0d383640e98bcdd3928dcb3dfd187372bcbc22245677bf87fb05342665bce4c181a9df70837be934faca01d4a70000bb01878574670400167250d300000000010000000000eab0c700409e9a2264b89a010000000000eab0c700000000a8ed323288010000000000eab0c700000040b9784d4301000000010002c523f40a0b387b0518ee551ff9def9d961b3ad7d5aa7cb2741a466980c765fd501000100000040b9784d4300804a1401eab0c7010001000000010002a2c18841a6c8a4bacbee939dca70aaa21addf3a547e98a7b3a23b2b57345eeed01000100000040b9784d4300804a1401eab0c701000001d00f010020d18d85b3b4257ae2bb22f7c5062a37a627f946741f0d6571118a65f5f8ec56806702f5d57dabe975f13e50971f64ed90f2e559e4c7a2a9604a60a6b42bd7bc190000ca01878574670400167250d300000000010000000000eab0c700000038d15bb3c2010000000000eab0c700000000a8ed32329701030000000000000e3d0001000000010002733e5215e6a4c10d15d9259a96aceacd67108a33a3d1a1d91909f6a9c38a8db40100000000008048af410001000000010002d9b973b59bc33dd6aafacec1a2e580cff5c68a04fa0cc0b982a51cfd3ec0a660010000000040b9784d430001000000010002a2c18841a6c8a4bacbee939dca70aaa21addf3a547e98a7b3a23b2b57345eeed0100000000 010000000000000001000000e945d82146e5ac181249124385637d508b8c511d7a70cfc94f27cba0ae5b6d2c5f108ff80a0f4ce80abdf83d39f4e1772e37953d18ec6b0ade10efb6ae400fb101000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f59800000000e1b2c6c479857f138b78c8115df4c153170098ff61eb90975d2adfd329b89f230001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 DMLOG START_BLOCK 6 DMLOG CREATION_OP ROOT 0 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":5,"value_ex":268516,"consumed":1},"cpu_usage":{"last_ordinal":5,"value_ex":95491,"consumed":101},"ram_usage":423424} -DMLOG TRX_OP CREATE onblock 9b0ecffa3c86942937cd8d64e131bcf815ad7d161236d414d0c2556fed5f5807 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed32329c02040000000000000000eab0c700000004db81f6d4d29bf7c04125670b78e0e1b4a83dfd956371d5d4d34d595cab812eaeafbc8ad665219d9f9581dfc79eee127357053221025305de73c1862e00000000000000000000000000000000000000000000000000000000000000000100000000000101000000040000000100000300000000000000000e3d0001000000010002733e5215e6a4c10d15d9259a96aceacd67108a33a3d1a1d91909f6a9c38a8db401000100000000008048af410001000000010002d9b973b59bc33dd6aafacec1a2e580cff5c68a04fa0cc0b982a51cfd3ec0a6600100020000000040b9784d430001000000010002a2c18841a6c8a4bacbee939dca70aaa21addf3a547e98a7b3a23b2b57345eeed010000000000 -DMLOG APPLIED_TRANSACTION 6 9b0ecffa3c86942937cd8d64e131bcf815ad7d161236d414d0c2556fed5f580706000000050000000100000006bca6d46c5e86fbb8ec0ada24193094abd2cddffbf1d556b70e22f73c010164640000000000000000000000000000000001010000010000000000eab0c7311e44a5e94360ab7037ee12c5e375af122ffc214f927c513fde907c2e9460810d000000000000000d00000000000000010000000000eab0c70c0000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed32329c02040000000000000000eab0c700000004db81f6d4d29bf7c04125670b78e0e1b4a83dfd956371d5d4d34d595cab812eaeafbc8ad665219d9f9581dfc79eee127357053221025305de73c1862e00000000000000000000000000000000000000000000000000000000000000000100000000000101000000040000000100000300000000000000000e3d0001000000010002733e5215e6a4c10d15d9259a96aceacd67108a33a3d1a1d91909f6a9c38a8db401000100000000008048af410001000000010002d9b973b59bc33dd6aafacec1a2e580cff5c68a04fa0cc0b982a51cfd3ec0a6600100020000000040b9784d430001000000010002a2c18841a6c8a4bacbee939dca70aaa21addf3a547e98a7b3a23b2b57345eeed0100000000000000000000016400009b0ecffa3c86942937cd8d64e131bcf815ad7d161236d414d0c2556fed5f580706000000050000000100000006bca6d46c5e86fbb8ec0ada24193094abd2cddffbf1d556b70e22f73c00000000000000 -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":5,"value_ex":380430892,"consumed":1463},"average_block_cpu_usage":{"last_ordinal":5,"value_ex":135794213,"consumed":8169},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1052778,"virtual_cpu_limit":200800} -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":6,"value_ex":377260634,"consumed":378},"average_block_cpu_usage":{"last_ordinal":6,"value_ex":135495928,"consumed":235},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1053831,"virtual_cpu_limit":201001} -DMLOG ACCEPTED_BLOCK_V2 00000006bca6d46c5e86fbb8ec0ada24193094abd2cddffbf1d556b70e22f73c 6 1 050000000000000000eab0c700000005615eed73ba5b30b20ca9b0c9e8fbc1d672fbf158841167789565a5b30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000100207b4f9f0a1252f046ebd90ecd9322575ea26036b41b77e5d1b7987703c94e7d372ee56a99b29191bb8ad7822b06a5ade10c279b01a35cca63a05807d66d0e6e6b000000 010000000000000001000000094ade1c65ea2cada3eb10cd2f979efc34dd00b8700f5acee661bf3982eab292291cf97cc2b4bea9e32fea80aaec513a30dca0b915dd63d18be7216c44a2532d01000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f5980000000003749489571d5f080221ffeff2e93dac9572c5f1799706518386fc04667c5ff30001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":5,"value_ex":269082,"consumed":1},"cpu_usage":{"last_ordinal":5,"value_ex":95491,"consumed":101},"ram_usage":424170} +DMLOG TRX_OP CREATE onblock f3e33c4e919b1d5e5129671ce7fad025147cdff1dc8878648bb270c834a05c69 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed32329c02040000000000000000eab0c70000000457ff5da8167250d310a4288628eb5fe90be08091e6d23c7abaf0f2bc410b2951dc6d5704f8506ec2d7702771505f239a34cd62d5d3837acf2b96ac2600000000000000000000000000000000000000000000000000000000000000000100000000000101000000040000000100000300000000000000000e3d0001000000010002733e5215e6a4c10d15d9259a96aceacd67108a33a3d1a1d91909f6a9c38a8db401000100000000008048af410001000000010002d9b973b59bc33dd6aafacec1a2e580cff5c68a04fa0cc0b982a51cfd3ec0a6600100020000000040b9784d430001000000010002a2c18841a6c8a4bacbee939dca70aaa21addf3a547e98a7b3a23b2b57345eeed010000000000 +DMLOG APPLIED_TRANSACTION 6 f3e33c4e919b1d5e5129671ce7fad025147cdff1dc8878648bb270c834a05c69060000000500000001000000063e9efa09e6a67b27fad814e7ec7fe4eb431159372940469bf711eb16010164640000000000000000000000000000000001010000010000000000eab0c7c58d85e50e6a56a59df9078a3a699081f1295b5ef94350749db649ae4a6fa53a0d000000000000000d00000000000000010000000000eab0c70c0000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed32329c02040000000000000000eab0c70000000457ff5da8167250d310a4288628eb5fe90be08091e6d23c7abaf0f2bc410b2951dc6d5704f8506ec2d7702771505f239a34cd62d5d3837acf2b96ac2600000000000000000000000000000000000000000000000000000000000000000100000000000101000000040000000100000300000000000000000e3d0001000000010002733e5215e6a4c10d15d9259a96aceacd67108a33a3d1a1d91909f6a9c38a8db401000100000000008048af410001000000010002d9b973b59bc33dd6aafacec1a2e580cff5c68a04fa0cc0b982a51cfd3ec0a6600100020000000040b9784d430001000000010002a2c18841a6c8a4bacbee939dca70aaa21addf3a547e98a7b3a23b2b57345eeed010000000000000000000001640000f3e33c4e919b1d5e5129671ce7fad025147cdff1dc8878648bb270c834a05c69060000000500000001000000063e9efa09e6a67b27fad814e7ec7fe4eb431159372940469bf711eb1600000000000000 +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":5,"value_ex":381234003,"consumed":1464},"average_block_cpu_usage":{"last_ordinal":5,"value_ex":135794213,"consumed":8169},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1052778,"virtual_cpu_limit":200800} +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":6,"value_ex":378057052,"consumed":379},"average_block_cpu_usage":{"last_ordinal":6,"value_ex":135495928,"consumed":235},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1053831,"virtual_cpu_limit":201001} +DMLOG ACCEPTED_BLOCK_V2 000000063e9efa09e6a67b27fad814e7ec7fe4eb431159372940469bf711eb16 6 1 050000000000000000eab0c70000000502bb1ef19375f22c9d29fe310438d5957155616adb5b86528e69c38300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001002085283208e5216ee577c7990a7dec8f3b80587b92b85202e7411157771f80f1a238d994d9e22fb5aa15ad5884b3824ce5b15cefeee63c2f513c5778db0c357a66000000 0100000000000000010000002e3f8ee5471b52dc3385787e07d6f7de760afe24b6f1000a01fe13cc640c9f8dfa52965ad2e7807f8803032f1a2a630808065ec841785c4914067634bf91246101000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f5980000000079877a374898494bb333a2f1ad352bff92af0c4308cb1e5099fac53f976c1ee60001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 DMLOG START_BLOCK 7 DMLOG CREATION_OP ROOT 0 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":6,"value_ex":268514,"consumed":1},"cpu_usage":{"last_ordinal":6,"value_ex":96069,"consumed":101},"ram_usage":423424} -DMLOG TRX_OP CREATE onblock 066308d897b775ce9cbb7bb67e30c187bfe94bbbdb73c64cc4c2e8faecad19cd 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274050000000000000000eab0c700000005615eed73ba5b30b20ca9b0c9e8fbc1d672fbf158841167789565a5b3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 -DMLOG APPLIED_TRANSACTION 7 066308d897b775ce9cbb7bb67e30c187bfe94bbbdb73c64cc4c2e8faecad19cd07000000060000000100000007a4769ffde99d9f1756a74bedcd295ef883b05a126abb7a10bf6dd700010164640000000000000000000000000000000001010000010000000000eab0c77f06649d4604bc9880ca8806a334064a4c4305124ab126acea6db46479ab1fc90e000000000000000e00000000000000010000000000eab0c70d0000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274050000000000000000eab0c700000005615eed73ba5b30b20ca9b0c9e8fbc1d672fbf158841167789565a5b3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001640000066308d897b775ce9cbb7bb67e30c187bfe94bbbdb73c64cc4c2e8faecad19cd07000000060000000100000007a4769ffde99d9f1756a74bedcd295ef883b05a126abb7a10bf6dd70000000000000000 -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":6,"value_ex":377260634,"consumed":378},"average_block_cpu_usage":{"last_ordinal":6,"value_ex":135495928,"consumed":235},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1053831,"virtual_cpu_limit":201001} -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":7,"value_ex":374116795,"consumed":375},"average_block_cpu_usage":{"last_ordinal":7,"value_ex":135200129,"consumed":235},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1054885,"virtual_cpu_limit":201202} -DMLOG ACCEPTED_BLOCK_V2 00000007a4769ffde99d9f1756a74bedcd295ef883b05a126abb7a10bf6dd700 7 1 060000000000000000eab0c700000006bca6d46c5e86fbb8ec0ada24193094abd2cddffbf1d556b70e22f73c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001001f04f93a45760b5722a764b7890b62c713388ef007de7f16a34057badc9a473f1f616aabc37bd07a6fee6e66a401912c7771129d96e030d5c95773c454b0d67d06000000 010000000000000001000000034e9587b13d2ba4038d05ec3658c2a44d47dc0787216bc82b4bca5beeafa17312b94a1eb38b79b5690b76182b5f0c9f921799a3068c9200a9374243631e157c01000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f598000000006ac80b36f517164935d96002b48815df4ab66914d2b4c18e89f48231d90384fb0001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":6,"value_ex":269080,"consumed":1},"cpu_usage":{"last_ordinal":6,"value_ex":96069,"consumed":101},"ram_usage":424170} +DMLOG TRX_OP CREATE onblock 1dd7162d30b13a177b5912bd6c361089090724547924264872380c3db58c9137 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274050000000000000000eab0c70000000502bb1ef19375f22c9d29fe310438d5957155616adb5b86528e69c383000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 +DMLOG APPLIED_TRANSACTION 7 1dd7162d30b13a177b5912bd6c361089090724547924264872380c3db58c913707000000060000000100000007abf9626290b20aaca67cee57316d8a47d73d71c8506fd56e185522cb010164640000000000000000000000000000000001010000010000000000eab0c7306b47548ff321ea13eeef33fb4d6f68e9567a8223e89d10680aae6d08246f950e000000000000000e00000000000000010000000000eab0c70d0000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274050000000000000000eab0c70000000502bb1ef19375f22c9d29fe310438d5957155616adb5b86528e69c3830000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000016400001dd7162d30b13a177b5912bd6c361089090724547924264872380c3db58c913707000000060000000100000007abf9626290b20aaca67cee57316d8a47d73d71c8506fd56e185522cb00000000000000 +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":6,"value_ex":378057052,"consumed":379},"average_block_cpu_usage":{"last_ordinal":6,"value_ex":135495928,"consumed":235},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1053831,"virtual_cpu_limit":201001} +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":7,"value_ex":374906576,"consumed":375},"average_block_cpu_usage":{"last_ordinal":7,"value_ex":135200129,"consumed":235},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1054885,"virtual_cpu_limit":201202} +DMLOG ACCEPTED_BLOCK_V2 00000007abf9626290b20aaca67cee57316d8a47d73d71c8506fd56e185522cb 7 1 060000000000000000eab0c7000000063e9efa09e6a67b27fad814e7ec7fe4eb431159372940469bf711eb1600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001001f351cd1bb42bc7fa64b101e37911d9b9c386a6382936672721eb146fe211c2705442039749430245a229ea92dc68cfdb60bce76e828d86709ddf51ff4c65eae95000000 010000000000000001000000e0b932c87e5008c0d036aebed656e66f833b9d8b353e1c90da390f08f163a7afbc63066f42a87db33ac9cbee9240b4b2f516daf0ca1a5d2742edd12fcaaa327801000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f59800000000aef8f72c267e08d55ef02e70bcf97986a1121a724178f193abab672a92ec841b0001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 DMLOG START_BLOCK 8 DMLOG CREATION_OP ROOT 0 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":7,"value_ex":268512,"consumed":1},"cpu_usage":{"last_ordinal":7,"value_ex":96647,"consumed":101},"ram_usage":423424} -DMLOG TRX_OP CREATE onblock d523e8817b1276d9f9d2a09fbc3bbb4a43f162fac695ed19e730639c46a71250 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274060000000000000000eab0c700000006bca6d46c5e86fbb8ec0ada24193094abd2cddffbf1d556b70e22f73c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 -DMLOG APPLIED_TRANSACTION 8 d523e8817b1276d9f9d2a09fbc3bbb4a43f162fac695ed19e730639c46a712500800000007000000010000000880de40ff2f5fd23fbe60ee6b67364fc9c600ba2c45dc360754d26931010164640000000000000000000000000000000001010000010000000000eab0c7c6414e24e63ca3c695ea55827bbaa4f8649a5f19b84739cce71f3c8f3d6a51710f000000000000000f00000000000000010000000000eab0c70e0000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274060000000000000000eab0c700000006bca6d46c5e86fbb8ec0ada24193094abd2cddffbf1d556b70e22f73c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001640000d523e8817b1276d9f9d2a09fbc3bbb4a43f162fac695ed19e730639c46a712500800000007000000010000000880de40ff2f5fd23fbe60ee6b67364fc9c600ba2c45dc360754d2693100000000000000 -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":7,"value_ex":374116795,"consumed":375},"average_block_cpu_usage":{"last_ordinal":7,"value_ex":135200129,"consumed":235},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1054885,"virtual_cpu_limit":201202} -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":8,"value_ex":370999155,"consumed":371},"average_block_cpu_usage":{"last_ordinal":8,"value_ex":134906795,"consumed":235},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1055940,"virtual_cpu_limit":201403} -DMLOG ACCEPTED_BLOCK_V2 0000000880de40ff2f5fd23fbe60ee6b67364fc9c600ba2c45dc360754d26931 8 1 070000000000000000eab0c700000007a4769ffde99d9f1756a74bedcd295ef883b05a126abb7a10bf6dd700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000010020d9cf3174773247f42599e233c8c5c1acbc6fa0bbd229c63bd52671be8d394c0a38d6a755eb93d5556ef544cb0485a111cc59f14f4dd1df1115890de92777169b000000 010000000000000001000000a41f3fc6160a77fe4eddff538486ab22b2a28eda853d2d9f1f39f060506abbab81f2780c2bc5175b2d288367c55a9b14f211faf2a4236671e5d4dace35443bba01000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f5980000000050679e5721959b0a2776f995f051546522bd56c9618d08842f4a109bddc77e960001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":7,"value_ex":269078,"consumed":1},"cpu_usage":{"last_ordinal":7,"value_ex":96647,"consumed":101},"ram_usage":424170} +DMLOG TRX_OP CREATE onblock 57b1971740d4b869c6db730a5b592f7cea007ae42d62a6d7c766f084dacfc682 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274060000000000000000eab0c7000000063e9efa09e6a67b27fad814e7ec7fe4eb431159372940469bf711eb16000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 +DMLOG APPLIED_TRANSACTION 8 57b1971740d4b869c6db730a5b592f7cea007ae42d62a6d7c766f084dacfc68208000000070000000100000008eeeda42dc4e822c493dd006b6d41ee1c089f1ccbc6f4eb5767cec1b5010164640000000000000000000000000000000001010000010000000000eab0c7d4bd9e464c573da093c4df121506354d28743f2b65807c83651af8493f1506950f000000000000000f00000000000000010000000000eab0c70e0000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274060000000000000000eab0c7000000063e9efa09e6a67b27fad814e7ec7fe4eb431159372940469bf711eb1600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000164000057b1971740d4b869c6db730a5b592f7cea007ae42d62a6d7c766f084dacfc68208000000070000000100000008eeeda42dc4e822c493dd006b6d41ee1c089f1ccbc6f4eb5767cec1b500000000000000 +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":7,"value_ex":374906576,"consumed":375},"average_block_cpu_usage":{"last_ordinal":7,"value_ex":135200129,"consumed":235},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1054885,"virtual_cpu_limit":201202} +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":8,"value_ex":371782354,"consumed":372},"average_block_cpu_usage":{"last_ordinal":8,"value_ex":134906795,"consumed":235},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1055940,"virtual_cpu_limit":201403} +DMLOG ACCEPTED_BLOCK_V2 00000008eeeda42dc4e822c493dd006b6d41ee1c089f1ccbc6f4eb5767cec1b5 8 1 070000000000000000eab0c700000007abf9626290b20aaca67cee57316d8a47d73d71c8506fd56e185522cb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000100203ccf360a154a99d173fd48117a4c8a572e30b074c457159c0ea45d8c2e7654f35f89ca31ae9fd5e3dbc52d6969772f52c182e2cd77733403f2ef5f578a1c6351000000 010000000000000001000000ee2d9f6b7e8b294b3d7b9d19c84dd20120dc26e1a5cdbaad25eff4b755ca00b63e94238d2c27875cdcff34599b70837dfd0266f7ef2c2f7260e956e5a721bc1c01000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f598000000009259ea5d5fd30e537d7829f74e014ae4094173db185d78b49e6715a2804de4110001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 DMLOG START_BLOCK 9 DMLOG CREATION_OP ROOT 0 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":8,"value_ex":268510,"consumed":1},"cpu_usage":{"last_ordinal":8,"value_ex":97225,"consumed":101},"ram_usage":423424} -DMLOG TRX_OP CREATE onblock 6c389944bf09a2ae044b81d7ae0cdf49dce69ce924a74b3b2c18ce70cc2f8219 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274070000000000000000eab0c700000007a4769ffde99d9f1756a74bedcd295ef883b05a126abb7a10bf6dd700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 -DMLOG APPLIED_TRANSACTION 9 6c389944bf09a2ae044b81d7ae0cdf49dce69ce924a74b3b2c18ce70cc2f821909000000080000000100000009d5cb8b7e9ccf9f921724b01288297f19eb8399aacde77c321b356c04010164640000000000000000000000000000000001010000010000000000eab0c7df2d8ee0c9ba5500e1ca8f6367feda01c190b1c6b38842797f9b1d94edd3975f10000000000000001000000000000000010000000000eab0c70f0000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274070000000000000000eab0c700000007a4769ffde99d9f1756a74bedcd295ef883b05a126abb7a10bf6dd7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000016400006c389944bf09a2ae044b81d7ae0cdf49dce69ce924a74b3b2c18ce70cc2f821909000000080000000100000009d5cb8b7e9ccf9f921724b01288297f19eb8399aacde77c321b356c0400000000000000 -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":8,"value_ex":370999155,"consumed":371},"average_block_cpu_usage":{"last_ordinal":8,"value_ex":134906795,"consumed":235},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1055940,"virtual_cpu_limit":201403} -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":9,"value_ex":367907495,"consumed":368},"average_block_cpu_usage":{"last_ordinal":9,"value_ex":134615905,"consumed":234},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1056996,"virtual_cpu_limit":201604} -DMLOG ACCEPTED_BLOCK_V2 00000009d5cb8b7e9ccf9f921724b01288297f19eb8399aacde77c321b356c04 9 1 080000000000000000eab0c70000000880de40ff2f5fd23fbe60ee6b67364fc9c600ba2c45dc360754d2693100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001001fc7fe2b70b3be27f8068b00305d536e7b7ee9949455f0876a3ad6be5b402fc6c874f244d09d4576d9c29206df588225041876b39088e82fa6781a7e3b241c9f7c000000 010000000000000001000000e687d16fd23b64eac4de4d057e187be617d2541c0e6a4ea40f3901b184f907c60eb9f26fe0fb8c3d8d51bea38d105de190a2646d71aa0b3d7d735f8cfd36763f01000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f59800000000b8a83f7c98f4078ab62b538bf00fdada28fbd137baa1cac5167e5719d25428370001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":8,"value_ex":269076,"consumed":1},"cpu_usage":{"last_ordinal":8,"value_ex":97225,"consumed":101},"ram_usage":424170} +DMLOG TRX_OP CREATE onblock 6d4a21818fa24d211493194568d2fe3c87a0988d9b06c3403c68bdf516e9634a 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274070000000000000000eab0c700000007abf9626290b20aaca67cee57316d8a47d73d71c8506fd56e185522cb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 +DMLOG APPLIED_TRANSACTION 9 6d4a21818fa24d211493194568d2fe3c87a0988d9b06c3403c68bdf516e9634a09000000080000000100000009d035d71d1ff8fc88eda8c09dc67f70ae9a5b2aa460fc361707dd469e010164640000000000000000000000000000000001010000010000000000eab0c7fc9fe7f998489f3bc1142bee49e23b1c717bcff6bfbdb15d643ee8a4a46010d510000000000000001000000000000000010000000000eab0c70f0000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274070000000000000000eab0c700000007abf9626290b20aaca67cee57316d8a47d73d71c8506fd56e185522cb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000016400006d4a21818fa24d211493194568d2fe3c87a0988d9b06c3403c68bdf516e9634a09000000080000000100000009d035d71d1ff8fc88eda8c09dc67f70ae9a5b2aa460fc361707dd469e00000000000000 +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":8,"value_ex":371782354,"consumed":372},"average_block_cpu_usage":{"last_ordinal":8,"value_ex":134906795,"consumed":235},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1055940,"virtual_cpu_limit":201403} +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":9,"value_ex":368684167,"consumed":369},"average_block_cpu_usage":{"last_ordinal":9,"value_ex":134615905,"consumed":234},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1056996,"virtual_cpu_limit":201604} +DMLOG ACCEPTED_BLOCK_V2 00000009d035d71d1ff8fc88eda8c09dc67f70ae9a5b2aa460fc361707dd469e 9 1 080000000000000000eab0c700000008eeeda42dc4e822c493dd006b6d41ee1c089f1ccbc6f4eb5767cec1b5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000010020ba2345b52315e13850fa7369f152c17282c6662fb6ca4c330198d9aad37fe10b522099626b27553c7a272d2ce0815cfee320653914c0e06024b9f6a4002596ed000000 010000000000000001000000c7d3cac13a46fd5907e021eaeebc1e12643291b0d5ad51c9e6614e04917787e1ccecbe34c8ee281496437bc777f98aa69e9099583f5f58c0867e52abb75207a101000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f598000000009d0ee46241dac3c53efe7e1129e95623afe34e9be8ca3e4e175a2f49facb14770001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 DMLOG START_BLOCK 10 DMLOG CREATION_OP ROOT 0 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":9,"value_ex":268508,"consumed":1},"cpu_usage":{"last_ordinal":9,"value_ex":97803,"consumed":101},"ram_usage":423424} -DMLOG TRX_OP CREATE onblock cc3c9f42bbad9c863ec2ab1df3f30fe746fd27588028c591b9fba183d231efee 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274080000000000000000eab0c70000000880de40ff2f5fd23fbe60ee6b67364fc9c600ba2c45dc360754d26931000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 -DMLOG APPLIED_TRANSACTION 10 cc3c9f42bbad9c863ec2ab1df3f30fe746fd27588028c591b9fba183d231efee0a00000009000000010000000ab8428fdd220c775573fd50a38a2d2e0b7f8e15b6646d6a4890693433010164640000000000000000000000000000000001010000010000000000eab0c71ebcdcde03c56098d6bfe9e3b2c298d7b71236b13ff3ae1abcc9ed3c9c1a941411000000000000001100000000000000010000000000eab0c7100000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274080000000000000000eab0c70000000880de40ff2f5fd23fbe60ee6b67364fc9c600ba2c45dc360754d26931000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001640000cc3c9f42bbad9c863ec2ab1df3f30fe746fd27588028c591b9fba183d231efee0a00000009000000010000000ab8428fdd220c775573fd50a38a2d2e0b7f8e15b6646d6a489069343300000000000000 -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":9,"value_ex":367907495,"consumed":368},"average_block_cpu_usage":{"last_ordinal":9,"value_ex":134615905,"consumed":234},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1056996,"virtual_cpu_limit":201604} -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":10,"value_ex":364841599,"consumed":365},"average_block_cpu_usage":{"last_ordinal":10,"value_ex":134327439,"consumed":234},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1058054,"virtual_cpu_limit":201805} -DMLOG ACCEPTED_BLOCK_V2 0000000ab8428fdd220c775573fd50a38a2d2e0b7f8e15b6646d6a4890693433 10 1 090000000000000000eab0c700000009d5cb8b7e9ccf9f921724b01288297f19eb8399aacde77c321b356c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001001f8ccd4699394f09356e2a2ad155256cb4547cc7993cd8f3c0d1757c5587e32ca51b9d00e704b6f5a5c36c33f4d4a2e8bf8ee1aba58c820a25278f62eb731c0eef000000 010000000000000001000000e3920ee0a11052b28ec4966da6e50545aa699331e3f7d636c0882d7d82015ecf777720590aabf8eaecc3cb347c3a943330887ae1457866f946171c192efb960501000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f59800000000946d9c4e6b18906e82df8fe0067c5dc1e124811db79eb53a875d822ef1e2095b0001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":9,"value_ex":269074,"consumed":1},"cpu_usage":{"last_ordinal":9,"value_ex":97803,"consumed":101},"ram_usage":424170} +DMLOG TRX_OP CREATE onblock 613a0ca43383ae5c076477d534134d49923607543a7d39584969d02c8b11e743 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274080000000000000000eab0c700000008eeeda42dc4e822c493dd006b6d41ee1c089f1ccbc6f4eb5767cec1b5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 +DMLOG APPLIED_TRANSACTION 10 613a0ca43383ae5c076477d534134d49923607543a7d39584969d02c8b11e7430a00000009000000010000000a4f1b7a1db5febcbd7ed19e14b74a60fe0ed73836dee7a58f89f50aca010164640000000000000000000000000000000001010000010000000000eab0c7a8b5914d206dddc6780804c7fb68396148e7573049db802cbefcfcd286aa034811000000000000001100000000000000010000000000eab0c7100000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274080000000000000000eab0c700000008eeeda42dc4e822c493dd006b6d41ee1c089f1ccbc6f4eb5767cec1b5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001640000613a0ca43383ae5c076477d534134d49923607543a7d39584969d02c8b11e7430a00000009000000010000000a4f1b7a1db5febcbd7ed19e14b74a60fe0ed73836dee7a58f89f50aca00000000000000 +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":9,"value_ex":368684167,"consumed":369},"average_block_cpu_usage":{"last_ordinal":9,"value_ex":134615905,"consumed":234},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1056996,"virtual_cpu_limit":201604} +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":10,"value_ex":365611798,"consumed":366},"average_block_cpu_usage":{"last_ordinal":10,"value_ex":134327439,"consumed":234},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1058054,"virtual_cpu_limit":201805} +DMLOG ACCEPTED_BLOCK_V2 0000000a4f1b7a1db5febcbd7ed19e14b74a60fe0ed73836dee7a58f89f50aca 10 1 090000000000000000eab0c700000009d035d71d1ff8fc88eda8c09dc67f70ae9a5b2aa460fc361707dd469e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001001f590a7bdc78652e7049a15e33ee4f965c4263201b6fb432859bf11a74b8f301d003bb025714a3de5a2be74977767b407c633392a4f52af192ad7b673876595bda000000 0100000000000000010000007f6f2c4be6a8bf6ef71236b1bd6d8a21cc9658e39caee4a7d54cdd1f4ebaa8cbbcd6f11aea92c26afea870735a611de3c37e780a5fbd183a3f79c019ea739e4701000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f59800000000191e318d2f91b3fd43720c939d67221032f0a96082fa1fb815ac8783a5fb95f50001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 DMLOG START_BLOCK 11 DMLOG CREATION_OP ROOT 0 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":10,"value_ex":268506,"consumed":1},"cpu_usage":{"last_ordinal":10,"value_ex":98381,"consumed":101},"ram_usage":423424} -DMLOG TRX_OP CREATE onblock 2b609e31f2f7b7f4758e2a409de13e929efec6a285e667f1656b20e8d2f4f54a 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274090000000000000000eab0c700000009d5cb8b7e9ccf9f921724b01288297f19eb8399aacde77c321b356c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 -DMLOG APPLIED_TRANSACTION 11 2b609e31f2f7b7f4758e2a409de13e929efec6a285e667f1656b20e8d2f4f54a0b0000000a000000010000000bc6394b1a1a2148f6ac8b47dd8cd69e54d6fb8a7deb05e5926836ef97010164640000000000000000000000000000000001010000010000000000eab0c7f98f26f7c4b0f8b52abcd7d205a5ac5697bf3defb3723684557f5a42ba254fa312000000000000001200000000000000010000000000eab0c7110000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274090000000000000000eab0c700000009d5cb8b7e9ccf9f921724b01288297f19eb8399aacde77c321b356c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000016400002b609e31f2f7b7f4758e2a409de13e929efec6a285e667f1656b20e8d2f4f54a0b0000000a000000010000000bc6394b1a1a2148f6ac8b47dd8cd69e54d6fb8a7deb05e5926836ef9700000000000000 -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":10,"value_ex":364841599,"consumed":365},"average_block_cpu_usage":{"last_ordinal":10,"value_ex":134327439,"consumed":234},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1058054,"virtual_cpu_limit":201805} -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":11,"value_ex":361801252,"consumed":362},"average_block_cpu_usage":{"last_ordinal":11,"value_ex":134041377,"consumed":234},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1059113,"virtual_cpu_limit":202007} -DMLOG ACCEPTED_BLOCK_V2 0000000bc6394b1a1a2148f6ac8b47dd8cd69e54d6fb8a7deb05e5926836ef97 11 1 0a0000000000000000eab0c70000000ab8428fdd220c775573fd50a38a2d2e0b7f8e15b6646d6a48906934330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000100208f0678cf1cdaebd4333e78e769096180f088674cc24696b2879b694311938b9d36653fdeef95a2b64c198d3bcf61e5936c7b6db32b4b156df6d8dec391846e8d000000 0100000000000000010000002c73a0817fe11badfb37fba5c9f6371bf77ff8d632d114ef80153967c76252d9419ae52323160c30804ef504c98eb9ff835208ab923548b938264c2a38db1f6a01000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f59800000000c7c515ebb6de7750316970ae03970a737db74b58c8f54c180f4ccafeaea4d2400001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":10,"value_ex":269072,"consumed":1},"cpu_usage":{"last_ordinal":10,"value_ex":98381,"consumed":101},"ram_usage":424170} +DMLOG TRX_OP CREATE onblock b7960d843f91dcf66d74947273505f5a083bf7d4f7681f5e99456aa8fb406956 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274090000000000000000eab0c700000009d035d71d1ff8fc88eda8c09dc67f70ae9a5b2aa460fc361707dd469e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 +DMLOG APPLIED_TRANSACTION 11 b7960d843f91dcf66d74947273505f5a083bf7d4f7681f5e99456aa8fb4069560b0000000a000000010000000bd9845e2df1871e5aecb347874881898ab60511aa6e59cac66a0ec19c010164640000000000000000000000000000000001010000010000000000eab0c76ee670fa30931ea9a9d4f1fc000c9396c1c9dafcfa3e3d91f8aa7c1745752a6d12000000000000001200000000000000010000000000eab0c7110000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274090000000000000000eab0c700000009d035d71d1ff8fc88eda8c09dc67f70ae9a5b2aa460fc361707dd469e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001640000b7960d843f91dcf66d74947273505f5a083bf7d4f7681f5e99456aa8fb4069560b0000000a000000010000000bd9845e2df1871e5aecb347874881898ab60511aa6e59cac66a0ec19c00000000000000 +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":10,"value_ex":365611798,"consumed":366},"average_block_cpu_usage":{"last_ordinal":10,"value_ex":134327439,"consumed":234},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1058054,"virtual_cpu_limit":201805} +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":11,"value_ex":362565033,"consumed":363},"average_block_cpu_usage":{"last_ordinal":11,"value_ex":134041377,"consumed":234},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1059113,"virtual_cpu_limit":202007} +DMLOG ACCEPTED_BLOCK_V2 0000000bd9845e2df1871e5aecb347874881898ab60511aa6e59cac66a0ec19c 11 1 0a0000000000000000eab0c70000000a4f1b7a1db5febcbd7ed19e14b74a60fe0ed73836dee7a58f89f50aca00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001001f3d3fffb5513bced95b092a5cde32a9ae9fd3a16374c900d1523ebc127092defa6bb43073ad66c7b10e5e686f27a66cf805070dc2866619cd34ced549cd5e1b0b000000 010000000000000001000000613134f69e794308a729d7bb5d6903287783ff475896cbd6a24ca226c33b8abe7c0a350d98780530f902f3d4a9f658a2e67d827e8c425a2f9eb42b095faec4f501000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f59800000000ee75c8377ef6b702b0c1526a2ece9b40410398e1200c1201c22e9234fc8c101a0001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 DMLOG START_BLOCK 12 DMLOG CREATION_OP ROOT 0 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":11,"value_ex":268504,"consumed":1},"cpu_usage":{"last_ordinal":11,"value_ex":98959,"consumed":101},"ram_usage":423424} -DMLOG TRX_OP CREATE onblock 5a5d15bce0fba5aeb4b7d229d835041ed7d89720bac15a814b59af1a95096fd3 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232740a0000000000000000eab0c70000000ab8428fdd220c775573fd50a38a2d2e0b7f8e15b6646d6a4890693433000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 -DMLOG APPLIED_TRANSACTION 12 5a5d15bce0fba5aeb4b7d229d835041ed7d89720bac15a814b59af1a95096fd30c0000000b000000010000000cae1ba5f56af3604f5847b8a280a03e3a554fc6d7a9f5d4a8d72eca9f010164640000000000000000000000000000000001010000010000000000eab0c76bbbd94b221bfacae11b508061d1d3076471cb307ac4e8ca7754226f852ced7313000000000000001300000000000000010000000000eab0c7120000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232740a0000000000000000eab0c70000000ab8428fdd220c775573fd50a38a2d2e0b7f8e15b6646d6a48906934330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000016400005a5d15bce0fba5aeb4b7d229d835041ed7d89720bac15a814b59af1a95096fd30c0000000b000000010000000cae1ba5f56af3604f5847b8a280a03e3a554fc6d7a9f5d4a8d72eca9f00000000000000 -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":11,"value_ex":361801252,"consumed":362},"average_block_cpu_usage":{"last_ordinal":11,"value_ex":134041377,"consumed":234},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1059113,"virtual_cpu_limit":202007} -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":12,"value_ex":358786241,"consumed":359},"average_block_cpu_usage":{"last_ordinal":12,"value_ex":133757699,"consumed":233},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1060173,"virtual_cpu_limit":202209} -DMLOG ACCEPTED_BLOCK_V2 0000000cae1ba5f56af3604f5847b8a280a03e3a554fc6d7a9f5d4a8d72eca9f 12 1 0b0000000000000000eab0c70000000bc6394b1a1a2148f6ac8b47dd8cd69e54d6fb8a7deb05e5926836ef9700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001001fcb818fcbbe24f2a5a2deddf7617f076f75fd29e1ac92c751afc043f9b0d03de4744d8533519e7858d47d3ded5db0d17420783b665660be00463a6423a54cbad6000000 0100000000000000010000001f410a13b660aab712c8719db1703dfcf5260aa6ddad9a2473c979b60ca54890e340f13303788317b2378b8411aa11578c85aed3404f3fc416ee345e7d54a73c01000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f59800000000132d59db6b3795ca7bca0ac649e2d3a2d2b5d8113eb8f9d5898a33da775278290001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":11,"value_ex":269070,"consumed":1},"cpu_usage":{"last_ordinal":11,"value_ex":98959,"consumed":101},"ram_usage":424170} +DMLOG TRX_OP CREATE onblock 5b4c789664e0bdd02c9611474c7ab730fb369a03f25ca6e89ed55b9a96e844aa 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232740a0000000000000000eab0c70000000a4f1b7a1db5febcbd7ed19e14b74a60fe0ed73836dee7a58f89f50aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 +DMLOG APPLIED_TRANSACTION 12 5b4c789664e0bdd02c9611474c7ab730fb369a03f25ca6e89ed55b9a96e844aa0c0000000b000000010000000cbf822794ca297a4a42d0395aef34e2c96452694d6aa69c5ba425189a010164640000000000000000000000000000000001010000010000000000eab0c764e4c6c3d73940c4ccd960f52ad3843f83f7ad6b861a8c03e1f1bc48ca478e7413000000000000001300000000000000010000000000eab0c7120000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232740a0000000000000000eab0c70000000a4f1b7a1db5febcbd7ed19e14b74a60fe0ed73836dee7a58f89f50aca0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000016400005b4c789664e0bdd02c9611474c7ab730fb369a03f25ca6e89ed55b9a96e844aa0c0000000b000000010000000cbf822794ca297a4a42d0395aef34e2c96452694d6aa69c5ba425189a00000000000000 +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":11,"value_ex":362565033,"consumed":363},"average_block_cpu_usage":{"last_ordinal":11,"value_ex":134041377,"consumed":234},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1059113,"virtual_cpu_limit":202007} +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":12,"value_ex":359543657,"consumed":360},"average_block_cpu_usage":{"last_ordinal":12,"value_ex":133757699,"consumed":233},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1060173,"virtual_cpu_limit":202209} +DMLOG ACCEPTED_BLOCK_V2 0000000cbf822794ca297a4a42d0395aef34e2c96452694d6aa69c5ba425189a 12 1 0b0000000000000000eab0c70000000bd9845e2df1871e5aecb347874881898ab60511aa6e59cac66a0ec19c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000010020b8564a2c73fbf35354a9a49f89f9d009184b6c3ff2b9173cc012d200c7f9b627777fe80d67beab363f50d13f2303d46a2610f9baf7c3166afa57e12e71d8d4dd000000 010000000000000001000000edce1d762c33e3323b6fde3512f64a3538c3155fdf760fbba1db9edf4a4e8a86605931960ecf933b308c62448921abc8ba7ec8dc8747097fb3cd0ddc96b7925e01000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f5980000000086be24e673b9c252d47e58ac54434d6ebade5a38367eae5d501638e9ccb380000001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 DMLOG START_BLOCK 13 DMLOG CREATION_OP ROOT 0 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":12,"value_ex":268502,"consumed":1},"cpu_usage":{"last_ordinal":12,"value_ex":99537,"consumed":101},"ram_usage":423424} -DMLOG TRX_OP CREATE onblock c491abc2cca7880a2e44915e7cfec7c2bac4b344c3809a95bfc92bf61da283e4 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232740b0000000000000000eab0c70000000bc6394b1a1a2148f6ac8b47dd8cd69e54d6fb8a7deb05e5926836ef97000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 -DMLOG APPLIED_TRANSACTION 13 c491abc2cca7880a2e44915e7cfec7c2bac4b344c3809a95bfc92bf61da283e40d0000000c000000010000000dcab17d3bad4cb1194b8fe898b3dfa0203bd9daab7e9ea6d416d62ec6010164640000000000000000000000000000000001010000010000000000eab0c7cd2d2bb22ede20a265c0e0e8fc3800df8b34bd396a27f96024ecaf074571ef2614000000000000001400000000000000010000000000eab0c7130000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232740b0000000000000000eab0c70000000bc6394b1a1a2148f6ac8b47dd8cd69e54d6fb8a7deb05e5926836ef97000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001640000c491abc2cca7880a2e44915e7cfec7c2bac4b344c3809a95bfc92bf61da283e40d0000000c000000010000000dcab17d3bad4cb1194b8fe898b3dfa0203bd9daab7e9ea6d416d62ec600000000000000 -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":12,"value_ex":358786241,"consumed":359},"average_block_cpu_usage":{"last_ordinal":12,"value_ex":133757699,"consumed":233},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1060173,"virtual_cpu_limit":202209} -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":13,"value_ex":355796355,"consumed":356},"average_block_cpu_usage":{"last_ordinal":13,"value_ex":133476385,"consumed":233},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1061234,"virtual_cpu_limit":202411} -DMLOG ACCEPTED_BLOCK_V2 0000000dcab17d3bad4cb1194b8fe898b3dfa0203bd9daab7e9ea6d416d62ec6 13 1 0c0000000000000000eab0c70000000cae1ba5f56af3604f5847b8a280a03e3a554fc6d7a9f5d4a8d72eca9f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000010020b9c21bf8be302dcbfb55ad9f870a89a6b099f4528547a7c89aece19275c82e10099b51a06af98cc8d13e095a97fd42f98c72ecb5b0d4292bdc999ba1ce1441c9000000 01000000000000000100000092b16e98fe13b98a37776641bb918ffba22c7f3454abd025b80acc2871dde3754d520746918f9e26e109aa13eb16032f05f2cb2a45741f5a054f9bdfda977bef01000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f59800000000515e5a1970fe7f2ed5ec67e779cae4cbd028f7e70582354310e168ddf36a116e0001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":12,"value_ex":269068,"consumed":1},"cpu_usage":{"last_ordinal":12,"value_ex":99537,"consumed":101},"ram_usage":424170} +DMLOG TRX_OP CREATE onblock 54208765f88d4694ef4bc91ac60bc3cea1cda08daa030ba17ec9c3fb6e446a92 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232740b0000000000000000eab0c70000000bd9845e2df1871e5aecb347874881898ab60511aa6e59cac66a0ec19c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 +DMLOG APPLIED_TRANSACTION 13 54208765f88d4694ef4bc91ac60bc3cea1cda08daa030ba17ec9c3fb6e446a920d0000000c000000010000000dff5966ad050f4275f9db90724d7dc3b6b50f7b5d52f36c6ce5b8c87b010164640000000000000000000000000000000001010000010000000000eab0c7c33ea9a0367a61bac0f1a962dc94f0749e648e4e4f023cf6d7d545f48cfd2f6014000000000000001400000000000000010000000000eab0c7130000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232740b0000000000000000eab0c70000000bd9845e2df1871e5aecb347874881898ab60511aa6e59cac66a0ec19c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000164000054208765f88d4694ef4bc91ac60bc3cea1cda08daa030ba17ec9c3fb6e446a920d0000000c000000010000000dff5966ad050f4275f9db90724d7dc3b6b50f7b5d52f36c6ce5b8c87b00000000000000 +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":12,"value_ex":359543657,"consumed":360},"average_block_cpu_usage":{"last_ordinal":12,"value_ex":133757699,"consumed":233},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1060173,"virtual_cpu_limit":202209} +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":13,"value_ex":356547459,"consumed":357},"average_block_cpu_usage":{"last_ordinal":13,"value_ex":133476385,"consumed":233},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1061234,"virtual_cpu_limit":202411} +DMLOG ACCEPTED_BLOCK_V2 0000000dff5966ad050f4275f9db90724d7dc3b6b50f7b5d52f36c6ce5b8c87b 13 1 0c0000000000000000eab0c70000000cbf822794ca297a4a42d0395aef34e2c96452694d6aa69c5ba425189a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001001f3d1ce67e322f4f1340291810746fa7d585f1bef45b252f463c916a7141bc84773a852b30a8fa9e2eec76644bd272a348965a0f4f79337a3515ac9ea3e6c888c3000000 0100000000000000010000008b246f45c3e6b5fe5738e9cd9671ff88440652b9bcbc7ac0ef28d04a6305019bd3af1281040d590d65e37d3cac4b7757d17530c683f73f7afc7ad034f6ce0afa01000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f598000000004873ecf43641c5c8f324654017fafc976e023202c98dc98c56e87d62b479406e0001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 DMLOG START_BLOCK 14 DMLOG CREATION_OP ROOT 0 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":13,"value_ex":268500,"consumed":1},"cpu_usage":{"last_ordinal":13,"value_ex":100115,"consumed":101},"ram_usage":423424} -DMLOG TRX_OP CREATE onblock c4d65d9a12132b0d9162a66e892ece5acf4f1c17b0dc5a24072464b77e54fef2 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232740c0000000000000000eab0c70000000cae1ba5f56af3604f5847b8a280a03e3a554fc6d7a9f5d4a8d72eca9f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 -DMLOG APPLIED_TRANSACTION 14 c4d65d9a12132b0d9162a66e892ece5acf4f1c17b0dc5a24072464b77e54fef20e0000000d000000010000000e3878bce11baaf7239470f2001660fbadedfd98c118222fd89f794999010164640000000000000000000000000000000001010000010000000000eab0c72eb7dbc16235cfbcee32cfcf7a74ca0aa5918d72c77e9d5a20b824a2f8ace2bc15000000000000001500000000000000010000000000eab0c7140000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232740c0000000000000000eab0c70000000cae1ba5f56af3604f5847b8a280a03e3a554fc6d7a9f5d4a8d72eca9f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001640000c4d65d9a12132b0d9162a66e892ece5acf4f1c17b0dc5a24072464b77e54fef20e0000000d000000010000000e3878bce11baaf7239470f2001660fbadedfd98c118222fd89f79499900000000000000 -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":13,"value_ex":355796355,"consumed":356},"average_block_cpu_usage":{"last_ordinal":13,"value_ex":133476385,"consumed":233},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1061234,"virtual_cpu_limit":202411} -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":14,"value_ex":352831385,"consumed":353},"average_block_cpu_usage":{"last_ordinal":14,"value_ex":133197415,"consumed":233},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1062296,"virtual_cpu_limit":202613} -DMLOG ACCEPTED_BLOCK_V2 0000000e3878bce11baaf7239470f2001660fbadedfd98c118222fd89f794999 14 1 0d0000000000000000eab0c70000000dcab17d3bad4cb1194b8fe898b3dfa0203bd9daab7e9ea6d416d62ec6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000010020471051a18cd8fef8fe7352f00a6a8fc33b0321a9d867a7b331eb712e001ee7a35346357b76f4f5ae83e74f474adf40e9f657658dd7020b83f7b3acf653736fd3000000 0100000000000000010000003f30664ffc3ce2484892d790459fc2d093c5992da00ffdd21a57d0d9b5633d8474c1b8626acf000994946b9262651d13db4fc2fc0b050d64a5f9badc312294d201000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f598000000002bbaf9a0fd3f7b9d05fcc3444415c0c7489ed56b66a8e10821609592af77ae440001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":13,"value_ex":269066,"consumed":1},"cpu_usage":{"last_ordinal":13,"value_ex":100115,"consumed":101},"ram_usage":424170} +DMLOG TRX_OP CREATE onblock 6d7b148b392c11e6b966c386dcb763ff08fa0ac0c6deee70a3b380a553e6f1fe 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232740c0000000000000000eab0c70000000cbf822794ca297a4a42d0395aef34e2c96452694d6aa69c5ba425189a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 +DMLOG APPLIED_TRANSACTION 14 6d7b148b392c11e6b966c386dcb763ff08fa0ac0c6deee70a3b380a553e6f1fe0e0000000d000000010000000ee4394ec2a348c2ef81df115f1cd669948d67842088475c77e22e762e010164640000000000000000000000000000000001010000010000000000eab0c7386ddf3f338945e2cdf93546d884a90d98c3777fa9552d9463a873a0fd907c9f15000000000000001500000000000000010000000000eab0c7140000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232740c0000000000000000eab0c70000000cbf822794ca297a4a42d0395aef34e2c96452694d6aa69c5ba425189a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000016400006d7b148b392c11e6b966c386dcb763ff08fa0ac0c6deee70a3b380a553e6f1fe0e0000000d000000010000000ee4394ec2a348c2ef81df115f1cd669948d67842088475c77e22e762e00000000000000 +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":13,"value_ex":356547459,"consumed":357},"average_block_cpu_usage":{"last_ordinal":13,"value_ex":133476385,"consumed":233},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1061234,"virtual_cpu_limit":202411} +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":14,"value_ex":353576230,"consumed":354},"average_block_cpu_usage":{"last_ordinal":14,"value_ex":133197415,"consumed":233},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1062296,"virtual_cpu_limit":202613} +DMLOG ACCEPTED_BLOCK_V2 0000000ee4394ec2a348c2ef81df115f1cd669948d67842088475c77e22e762e 14 1 0d0000000000000000eab0c70000000dff5966ad050f4275f9db90724d7dc3b6b50f7b5d52f36c6ce5b8c87b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001001ff57a3fe7d7e6f798971a0484ad5fab23e192e7deeced9490d42472fcfa0e7ba820f1fe1ba4fd3f55f842463f4d2b14c36855c0c627d0ce6cc3716e44753dc229000000 01000000000000000100000072f6833b0aab231f7a96fe9b9e344d4d39053060fc98fd1ce77117f11d2fa0118983db57de6001d3acaedf1a88c032a4cb3125016acf539e2b5ef1a02d7f91d801000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f598000000009ac4e787073a445a3e03aacfeeff0f054b2b4fadacb0d337f983aae5dd702fec0001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 DMLOG START_BLOCK 15 DMLOG CREATION_OP ROOT 0 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":14,"value_ex":268498,"consumed":1},"cpu_usage":{"last_ordinal":14,"value_ex":100693,"consumed":101},"ram_usage":423424} -DMLOG TRX_OP CREATE onblock d0a9306fc4439dc08e95cf14bcc3e397746c59b21daf2b4978604f7a9129bc66 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232740d0000000000000000eab0c70000000dcab17d3bad4cb1194b8fe898b3dfa0203bd9daab7e9ea6d416d62ec6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 -DMLOG APPLIED_TRANSACTION 15 d0a9306fc4439dc08e95cf14bcc3e397746c59b21daf2b4978604f7a9129bc660f0000000e000000010000000f915a5b9a044d34232390552f0836f9226b06212ca043bf2f63ddb31c010164640000000000000000000000000000000001010000010000000000eab0c76d507bc3e4020fe6d88d4daa961a812bec74751835c2901f615f7016e46e31fe16000000000000001600000000000000010000000000eab0c7150000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232740d0000000000000000eab0c70000000dcab17d3bad4cb1194b8fe898b3dfa0203bd9daab7e9ea6d416d62ec6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001640000d0a9306fc4439dc08e95cf14bcc3e397746c59b21daf2b4978604f7a9129bc660f0000000e000000010000000f915a5b9a044d34232390552f0836f9226b06212ca043bf2f63ddb31c00000000000000 -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":14,"value_ex":352831385,"consumed":353},"average_block_cpu_usage":{"last_ordinal":14,"value_ex":133197415,"consumed":233},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1062296,"virtual_cpu_limit":202613} -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":15,"value_ex":349891123,"consumed":350},"average_block_cpu_usage":{"last_ordinal":15,"value_ex":132920770,"consumed":233},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1063359,"virtual_cpu_limit":202815} -DMLOG ACCEPTED_BLOCK_V2 0000000f915a5b9a044d34232390552f0836f9226b06212ca043bf2f63ddb31c 15 1 0e0000000000000000eab0c70000000e3878bce11baaf7239470f2001660fbadedfd98c118222fd89f794999000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000010020c93e54ee36f0848c6c059dff43b71f9cdb2715740525a6849d23f83c9aaa2d415949d8adaff76fafb45324012a5ba2cf330a3d56e81561b2e29f8a30cef7aed3000000 010000000000000001000000236e4861a543b4e41f24d2bc3412c923755317d437355df42f0b89a9cb065748e61497d9955b1df85a85115c8cc927925b7f2bf400a38734682160be96a1d8a401000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f5980000000072bb658c52363ed4f0260d13045376f89034a6e8419e0963a123dcc2116c96140001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":14,"value_ex":269064,"consumed":1},"cpu_usage":{"last_ordinal":14,"value_ex":100693,"consumed":101},"ram_usage":424170} +DMLOG TRX_OP CREATE onblock c01a74195bdc609375f27b1df6bca8e386c0924b8cdebe7e732841ab3c7aa957 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232740d0000000000000000eab0c70000000dff5966ad050f4275f9db90724d7dc3b6b50f7b5d52f36c6ce5b8c87b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 +DMLOG APPLIED_TRANSACTION 15 c01a74195bdc609375f27b1df6bca8e386c0924b8cdebe7e732841ab3c7aa9570f0000000e000000010000000f9abfa9d6ea88ede5261b8506526b287bf1d89c3e49b6fcc203c54c8d010164640000000000000000000000000000000001010000010000000000eab0c713e791b4ee562ee2c39525d88ac41d552d43b410e666dd92fcda547cc07ccf7d16000000000000001600000000000000010000000000eab0c7150000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232740d0000000000000000eab0c70000000dff5966ad050f4275f9db90724d7dc3b6b50f7b5d52f36c6ce5b8c87b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001640000c01a74195bdc609375f27b1df6bca8e386c0924b8cdebe7e732841ab3c7aa9570f0000000e000000010000000f9abfa9d6ea88ede5261b8506526b287bf1d89c3e49b6fcc203c54c8d00000000000000 +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":14,"value_ex":353576230,"consumed":354},"average_block_cpu_usage":{"last_ordinal":14,"value_ex":133197415,"consumed":233},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1062296,"virtual_cpu_limit":202613} +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":15,"value_ex":350629761,"consumed":351},"average_block_cpu_usage":{"last_ordinal":15,"value_ex":132920770,"consumed":233},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1063359,"virtual_cpu_limit":202815} +DMLOG ACCEPTED_BLOCK_V2 0000000f9abfa9d6ea88ede5261b8506526b287bf1d89c3e49b6fcc203c54c8d 15 1 0e0000000000000000eab0c70000000ee4394ec2a348c2ef81df115f1cd669948d67842088475c77e22e762e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001002077fe88b88f9d9e1c15c89c31d4f2bdff2c6ec2a0af77e85168ca7e6e447473173ebfa586c1abf24bd8fdf5170bb1d261fc35b16ca65fc5fb73fd4ae57913ca97000000 010000000000000001000000c133d18772ae8d183f6da293f25f2604f45b6c0baf8926f8eeb3d9c388e0ab6403c7db75ec055c47b54eae9b7e7df39c4444acf8f0407b0f59dfcf81facd10c201000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f598000000002a4d8e8fa98e016913047b23dd3953ad42c7dfa7cec1cd9bc7c81831ff9148760001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 DMLOG START_BLOCK 16 DMLOG CREATION_OP ROOT 0 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":15,"value_ex":268496,"consumed":1},"cpu_usage":{"last_ordinal":15,"value_ex":101271,"consumed":101},"ram_usage":423424} -DMLOG TRX_OP CREATE onblock deff22501711f2f33e37a9f2fddce8ed96c5991f8694ec5efe30bd4497eecabd 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232740e0000000000000000eab0c70000000e3878bce11baaf7239470f2001660fbadedfd98c118222fd89f794999000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 -DMLOG APPLIED_TRANSACTION 16 deff22501711f2f33e37a9f2fddce8ed96c5991f8694ec5efe30bd4497eecabd100000000f000000010000001003f3de2011e5a4f44eec19586da5f77c6d68e5adb30bc24464c1dda4010164640000000000000000000000000000000001010000010000000000eab0c74cdaec83770f5e587504b3fc3fa55bc16ae8c54858ed918c9e47148ac485c72c17000000000000001700000000000000010000000000eab0c7160000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232740e0000000000000000eab0c70000000e3878bce11baaf7239470f2001660fbadedfd98c118222fd89f794999000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001640000deff22501711f2f33e37a9f2fddce8ed96c5991f8694ec5efe30bd4497eecabd100000000f000000010000001003f3de2011e5a4f44eec19586da5f77c6d68e5adb30bc24464c1dda400000000000000 -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":15,"value_ex":349891123,"consumed":350},"average_block_cpu_usage":{"last_ordinal":15,"value_ex":132920770,"consumed":233},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1063359,"virtual_cpu_limit":202815} -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":16,"value_ex":346975363,"consumed":347},"average_block_cpu_usage":{"last_ordinal":16,"value_ex":132646430,"consumed":232},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1064423,"virtual_cpu_limit":203018} -DMLOG ACCEPTED_BLOCK_V2 0000001003f3de2011e5a4f44eec19586da5f77c6d68e5adb30bc24464c1dda4 16 1 0f0000000000000000eab0c70000000f915a5b9a044d34232390552f0836f9226b06212ca043bf2f63ddb31c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001001ff0cb2d5ae45c4863aafcb7ef1c5aa27547ac980f577bf53de29b87ad70a6b6da7a7717c98969f532fa5289a572d5fb852ac2b6894d89d4773ff64e1f5ad0cb4b000000 010000000000000001000000d7dde17ac195169a46baf504426142c4f0dcdc2efa3bd1880161a12df639e95eb0dc65b3c3b26988c0dd028ae8fcfff64d103ec643c7e923d9f859e0859e1bf201000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f598000000003b5fff7676c7ea25ba5534ef70bed844828b5824e0008ee60abed6cf8d10b21b0001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":15,"value_ex":269062,"consumed":1},"cpu_usage":{"last_ordinal":15,"value_ex":101271,"consumed":101},"ram_usage":424170} +DMLOG TRX_OP CREATE onblock 3af9369fe77156a331c5b988b4866f9ee32efc18ba28b6ecb999d290ca7c6a76 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232740e0000000000000000eab0c70000000ee4394ec2a348c2ef81df115f1cd669948d67842088475c77e22e762e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 +DMLOG APPLIED_TRANSACTION 16 3af9369fe77156a331c5b988b4866f9ee32efc18ba28b6ecb999d290ca7c6a76100000000f0000000100000010cd0da9d9554aad7f6ef98a21c25896ec16aa7518b327448417f1e745010164640000000000000000000000000000000001010000010000000000eab0c7d3c214fe8220de1dcfb9d327575a40ed302ad3a2cd46dc876a8c6419ff69468617000000000000001700000000000000010000000000eab0c7160000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232740e0000000000000000eab0c70000000ee4394ec2a348c2ef81df115f1cd669948d67842088475c77e22e762e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000016400003af9369fe77156a331c5b988b4866f9ee32efc18ba28b6ecb999d290ca7c6a76100000000f0000000100000010cd0da9d9554aad7f6ef98a21c25896ec16aa7518b327448417f1e74500000000000000 +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":15,"value_ex":350629761,"consumed":351},"average_block_cpu_usage":{"last_ordinal":15,"value_ex":132920770,"consumed":233},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1063359,"virtual_cpu_limit":202815} +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":16,"value_ex":347707846,"consumed":348},"average_block_cpu_usage":{"last_ordinal":16,"value_ex":132646430,"consumed":232},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1064423,"virtual_cpu_limit":203018} +DMLOG ACCEPTED_BLOCK_V2 00000010cd0da9d9554aad7f6ef98a21c25896ec16aa7518b327448417f1e745 16 1 0f0000000000000000eab0c70000000f9abfa9d6ea88ede5261b8506526b287bf1d89c3e49b6fcc203c54c8d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000010020f4fda5777be1355ce8ab8694dcec839c34d7b029c616baa486258e34bf07a6046ca21017a79b0498fc6783ba6fa4b21fc2024790df5fda9dd3fb4406f2da8eaa000000 010000000000000001000000a1a32d10ba5edf7628ef8ad3ae0e4e64e457895532e5da07dcaaa2eec3b224c303bf38ad71cfd34910b86b38ee96ee778e85a2cd221d67a91639f99e286235dd01000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f598000000005af4ec6ab2d8cc551cd24461fa46c75404e6c4e3a6591fe2643fe5d5038f90650001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 DMLOG START_BLOCK 17 DMLOG CREATION_OP ROOT 0 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":16,"value_ex":268494,"consumed":1},"cpu_usage":{"last_ordinal":16,"value_ex":101849,"consumed":101},"ram_usage":423424} -DMLOG TRX_OP CREATE onblock bc58677c82496bb79d1b08bfa3992c044a57aac5e2bcb9f7d584ee5483fe4507 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232740f0000000000000000eab0c70000000f915a5b9a044d34232390552f0836f9226b06212ca043bf2f63ddb31c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 -DMLOG APPLIED_TRANSACTION 17 bc58677c82496bb79d1b08bfa3992c044a57aac5e2bcb9f7d584ee5483fe450711000000100000000100000011d0e4ed28f7e3163781cccbe49dafb7e31d973435f9724e713ac7d758010164640000000000000000000000000000000001010000010000000000eab0c7f78c0c79ba3116b2f445954ed68a6477ede3dc2152895da16a37f99f4e97c98b18000000000000001800000000000000010000000000eab0c7170000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232740f0000000000000000eab0c70000000f915a5b9a044d34232390552f0836f9226b06212ca043bf2f63ddb31c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001640000bc58677c82496bb79d1b08bfa3992c044a57aac5e2bcb9f7d584ee5483fe450711000000100000000100000011d0e4ed28f7e3163781cccbe49dafb7e31d973435f9724e713ac7d75800000000000000 -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":16,"value_ex":346975363,"consumed":347},"average_block_cpu_usage":{"last_ordinal":16,"value_ex":132646430,"consumed":232},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1064423,"virtual_cpu_limit":203018} -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":17,"value_ex":344083901,"consumed":345},"average_block_cpu_usage":{"last_ordinal":17,"value_ex":132374377,"consumed":232},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1065488,"virtual_cpu_limit":203221} -DMLOG ACCEPTED_BLOCK_V2 00000011d0e4ed28f7e3163781cccbe49dafb7e31d973435f9724e713ac7d758 17 1 100000000000000000eab0c70000001003f3de2011e5a4f44eec19586da5f77c6d68e5adb30bc24464c1dda4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000010020307e2a6207817be4122ec1a5b4428faa528aa976117e40ea6401803536be319d23a4c5797f6db82a565b0608fe92aef55cf30822e06432e8cefa02b9f771e56e000000 010000000000000001000000d5a28e5026e447db926851a026530b4de1f16e2f3bd569389d423927cc1985331cd0f5664f1713bf5220838e1524c4d39e5caa6f0047bb3a4a3667607119e97501000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f59800000000962d3c6aa59cd3ebc46e211ae16ccc0b831b12f7730bcb80579284b01a82ffef0001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":16,"value_ex":269060,"consumed":1},"cpu_usage":{"last_ordinal":16,"value_ex":101849,"consumed":101},"ram_usage":424170} +DMLOG TRX_OP CREATE onblock aa018b441910e80656aa29818ddb076394f1408f879d93f87164433a6ee8ee8e 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232740f0000000000000000eab0c70000000f9abfa9d6ea88ede5261b8506526b287bf1d89c3e49b6fcc203c54c8d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 +DMLOG APPLIED_TRANSACTION 17 aa018b441910e80656aa29818ddb076394f1408f879d93f87164433a6ee8ee8e110000001000000001000000118b92a9fe6673fe56f4974bdf3c6bb9931c2d7c9d02d825742ecc856f010164640000000000000000000000000000000001010000010000000000eab0c7f838f32ad8f1ad1631984f487f101cfe3f894024199d565b467e7344244e279a18000000000000001800000000000000010000000000eab0c7170000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232740f0000000000000000eab0c70000000f9abfa9d6ea88ede5261b8506526b287bf1d89c3e49b6fcc203c54c8d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001640000aa018b441910e80656aa29818ddb076394f1408f879d93f87164433a6ee8ee8e110000001000000001000000118b92a9fe6673fe56f4974bdf3c6bb9931c2d7c9d02d825742ecc856f00000000000000 +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":16,"value_ex":347707846,"consumed":348},"average_block_cpu_usage":{"last_ordinal":16,"value_ex":132646430,"consumed":232},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1064423,"virtual_cpu_limit":203018} +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":17,"value_ex":344810280,"consumed":345},"average_block_cpu_usage":{"last_ordinal":17,"value_ex":132374377,"consumed":232},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1065488,"virtual_cpu_limit":203221} +DMLOG ACCEPTED_BLOCK_V2 000000118b92a9fe6673fe56f4974bdf3c6bb9931c2d7c9d02d825742ecc856f 17 1 100000000000000000eab0c700000010cd0da9d9554aad7f6ef98a21c25896ec16aa7518b327448417f1e74500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001001f27e40a8e3f020c46591a40727d6f934ff13b1185d190da477c77410282f12d982fbcf4a118e95228ac46bb0f3148fdcc6dcfd470520bdbe9ab12b3de36b1f2cc000000 010000000000000001000000380d15146aa112fc312ef7fade670c52efc5ebba251cd453694f64e2cc3cdce93271d88c77a4ff0bef962ed8f54975ed240f731531b1655eaa62b47e3c54728601000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f5980000000042a2ea9771b318a2bd7c51b809b6235d033a355d0b711851abcc47e15ebc9b3b0001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 DMLOG START_BLOCK 18 DMLOG CREATION_OP ROOT 0 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":17,"value_ex":268492,"consumed":1},"cpu_usage":{"last_ordinal":17,"value_ex":102427,"consumed":101},"ram_usage":423424} -DMLOG TRX_OP CREATE onblock 83051767038c2a8aa508128b1f2542104fa007b6ab673ec4da58de42fad18e4f 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274100000000000000000eab0c70000001003f3de2011e5a4f44eec19586da5f77c6d68e5adb30bc24464c1dda4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 -DMLOG APPLIED_TRANSACTION 18 83051767038c2a8aa508128b1f2542104fa007b6ab673ec4da58de42fad18e4f12000000110000000100000012609f7a8538b401a5211c8be4a30149d160f047a469f69ac7c9f7e683010164640000000000000000000000000000000001010000010000000000eab0c7ac3e1008210e4ea5463d42500c1fe998183140fa6f5303d80fcae5bd55b0da8719000000000000001900000000000000010000000000eab0c7180000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274100000000000000000eab0c70000001003f3de2011e5a4f44eec19586da5f77c6d68e5adb30bc24464c1dda400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000164000083051767038c2a8aa508128b1f2542104fa007b6ab673ec4da58de42fad18e4f12000000110000000100000012609f7a8538b401a5211c8be4a30149d160f047a469f69ac7c9f7e68300000000000000 -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":17,"value_ex":344083901,"consumed":345},"average_block_cpu_usage":{"last_ordinal":17,"value_ex":132374377,"consumed":232},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1065488,"virtual_cpu_limit":203221} -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":18,"value_ex":341216535,"consumed":342},"average_block_cpu_usage":{"last_ordinal":18,"value_ex":132104591,"consumed":232},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1066554,"virtual_cpu_limit":203424} -DMLOG ACCEPTED_BLOCK_V2 00000012609f7a8538b401a5211c8be4a30149d160f047a469f69ac7c9f7e683 18 1 110000000000000000eab0c700000011d0e4ed28f7e3163781cccbe49dafb7e31d973435f9724e713ac7d75800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001001fd0023a2e88db2d8a30a966cd59f9414d5783b5701f6b739b27bb5192c114b3500a8e9f4c88d4c41e4ae074487c0536ddc40fb2f58fa2a685bf4965f5ad096fd9000000 01000000000000000100000052c385acf52c212c71d7c1b9df6b05e4d40fc50e2a1fb710494c5a59b7405f567eb0a19f9c92a7b40809e857dc896c39caf69e5d389ec81238b6d1de1c07a91001000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f598000000009c90f538f0518911ea7e6a2df0743124fbf83fd8fd3857d3364c1e0958d10d870001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":17,"value_ex":269058,"consumed":1},"cpu_usage":{"last_ordinal":17,"value_ex":102427,"consumed":101},"ram_usage":424170} +DMLOG TRX_OP CREATE onblock 4966b18ebd4f9cbf6373caedd640bf7de7702eb07a8f192ccca12a23f557a9cd 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274100000000000000000eab0c700000010cd0da9d9554aad7f6ef98a21c25896ec16aa7518b327448417f1e745000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 +DMLOG APPLIED_TRANSACTION 18 4966b18ebd4f9cbf6373caedd640bf7de7702eb07a8f192ccca12a23f557a9cd12000000110000000100000012829bcfe68c1e540089ca1efd3935a17a6fc036e78a2907bcd119624b010164640000000000000000000000000000000001010000010000000000eab0c7264341872be9975255c38a9a6ba39c4c976f57d0a494b6ec5d85c39d03705b6819000000000000001900000000000000010000000000eab0c7180000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274100000000000000000eab0c700000010cd0da9d9554aad7f6ef98a21c25896ec16aa7518b327448417f1e7450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000016400004966b18ebd4f9cbf6373caedd640bf7de7702eb07a8f192ccca12a23f557a9cd12000000110000000100000012829bcfe68c1e540089ca1efd3935a17a6fc036e78a2907bcd119624b00000000000000 +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":17,"value_ex":344810280,"consumed":345},"average_block_cpu_usage":{"last_ordinal":17,"value_ex":132374377,"consumed":232},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1065488,"virtual_cpu_limit":203221} +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":18,"value_ex":341936861,"consumed":342},"average_block_cpu_usage":{"last_ordinal":18,"value_ex":132104591,"consumed":232},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1066554,"virtual_cpu_limit":203424} +DMLOG ACCEPTED_BLOCK_V2 00000012829bcfe68c1e540089ca1efd3935a17a6fc036e78a2907bcd119624b 18 1 110000000000000000eab0c7000000118b92a9fe6673fe56f4974bdf3c6bb9931c2d7c9d02d825742ecc856f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001002054fa231bcce087251ea8d476050cbbf8beaed336f607177b5070c742c707345203411d0ed759861a426a0cb1bfe2da58cee6b5322c44cae1681690d33372f8f5000000 010000000000000001000000e3d8ef2b1ea1ff76238417cda05b2b405801c0310b9a84744540cb0c3a336bd5dc5d60c657142ea775cdfd47f97a0407014805a5183560be3a1e827ef7b8f06801000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f598000000007d8b3e477d3dacf46765669b40f244b1f27a6809384b435653e55c65f090ebca0001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 DMLOG START_BLOCK 19 DMLOG CREATION_OP ROOT 0 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":18,"value_ex":268490,"consumed":1},"cpu_usage":{"last_ordinal":18,"value_ex":103005,"consumed":101},"ram_usage":423424} -DMLOG TRX_OP CREATE onblock 53f32ccab68acd11b402bb56b27ec12d31fd9e8dd152569974a758542ce9d24c 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274110000000000000000eab0c700000011d0e4ed28f7e3163781cccbe49dafb7e31d973435f9724e713ac7d758000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 -DMLOG APPLIED_TRANSACTION 19 53f32ccab68acd11b402bb56b27ec12d31fd9e8dd152569974a758542ce9d24c13000000120000000100000013466d19b8db4685541bb62c66d280573c567a39c6dc2d4bf3051820c5010164640000000000000000000000000000000001010000010000000000eab0c7ae347a84afc69aad30cc4f3798c16a89b2a686c4a670166706a3cd8c4356a93e1a000000000000001a00000000000000010000000000eab0c7190000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274110000000000000000eab0c700000011d0e4ed28f7e3163781cccbe49dafb7e31d973435f9724e713ac7d75800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000164000053f32ccab68acd11b402bb56b27ec12d31fd9e8dd152569974a758542ce9d24c13000000120000000100000013466d19b8db4685541bb62c66d280573c567a39c6dc2d4bf3051820c500000000000000 -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":18,"value_ex":341216535,"consumed":342},"average_block_cpu_usage":{"last_ordinal":18,"value_ex":132104591,"consumed":232},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1066554,"virtual_cpu_limit":203424} -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":19,"value_ex":338373063,"consumed":339},"average_block_cpu_usage":{"last_ordinal":19,"value_ex":131837053,"consumed":232},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1067621,"virtual_cpu_limit":203627} -DMLOG ACCEPTED_BLOCK_V2 00000013466d19b8db4685541bb62c66d280573c567a39c6dc2d4bf3051820c5 19 1 120000000000000000eab0c700000012609f7a8538b401a5211c8be4a30149d160f047a469f69ac7c9f7e68300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001001fa183e0c36fa063ea3b4275b821acfec5490e8735f0fd03f64f6c62b7857891bc13f6258caf6fdf0796ef054a0593ccf55676565b005a914b939f67bc2ab42854000000 0100000000000000010000003b6e1cf4cb7435ea541a1fd1129652ed552cefddd0703e462eaa14e8d0a36a0692cfe785cbf63b8609d08575433fd6d3cc3035414e9cd78adf6e5dac2385feb301000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f5980000000022a61949de1066cc59a47c8c36ee091f937fb5d6067742f60b50192277c899d20001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":18,"value_ex":269056,"consumed":1},"cpu_usage":{"last_ordinal":18,"value_ex":103005,"consumed":101},"ram_usage":424170} +DMLOG TRX_OP CREATE onblock 3efb705182c384c3f930f90027197d0d055b3e82323a82aa34740e7a09a35c27 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274110000000000000000eab0c7000000118b92a9fe6673fe56f4974bdf3c6bb9931c2d7c9d02d825742ecc856f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 +DMLOG APPLIED_TRANSACTION 19 3efb705182c384c3f930f90027197d0d055b3e82323a82aa34740e7a09a35c271300000012000000010000001389bedc8e39249d03e000a2b6f6d20541a4ad79cba5c09111d26466a3010164640000000000000000000000000000000001010000010000000000eab0c720288f56bf4b6e65db87b3965394fe335ff2611f508f9ed89dccbee74dc8f93f1a000000000000001a00000000000000010000000000eab0c7190000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274110000000000000000eab0c7000000118b92a9fe6673fe56f4974bdf3c6bb9931c2d7c9d02d825742ecc856f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000016400003efb705182c384c3f930f90027197d0d055b3e82323a82aa34740e7a09a35c271300000012000000010000001389bedc8e39249d03e000a2b6f6d20541a4ad79cba5c09111d26466a300000000000000 +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":18,"value_ex":341936861,"consumed":342},"average_block_cpu_usage":{"last_ordinal":18,"value_ex":132104591,"consumed":232},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1066554,"virtual_cpu_limit":203424} +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":19,"value_ex":339087387,"consumed":340},"average_block_cpu_usage":{"last_ordinal":19,"value_ex":131837053,"consumed":232},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1067621,"virtual_cpu_limit":203627} +DMLOG ACCEPTED_BLOCK_V2 0000001389bedc8e39249d03e000a2b6f6d20541a4ad79cba5c09111d26466a3 19 1 120000000000000000eab0c700000012829bcfe68c1e540089ca1efd3935a17a6fc036e78a2907bcd119624b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000100207a96431ad4b9bda3f848fed19a6622b68652198e91c0c68ec3b0322f58c122ff4358bd5d3f59b9066123b1692e8e66df24fba2b497eb62aad82132761a6fdd6e000000 01000000000000000100000098d77857da5dfa65f5fcd4f68b53ccbbdefa4a48563f8a1b314281d070065cd855d77a0f681ccb27742481174dd23ae9896ede04433dc721c64b2e5a87b9a5a601000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f59800000000f9e7c3fc69fb546d31bc346186c10b547f6cc9aeb2f1da6ea44e56b8efa340380001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 DMLOG START_BLOCK 20 DMLOG CREATION_OP ROOT 0 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":19,"value_ex":268488,"consumed":1},"cpu_usage":{"last_ordinal":19,"value_ex":103583,"consumed":101},"ram_usage":423424} -DMLOG TRX_OP CREATE onblock 05ad7757e300d1a90c82a6232ab101000e19e007ffa6d76a3c7b09341ed290f3 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274120000000000000000eab0c700000012609f7a8538b401a5211c8be4a30149d160f047a469f69ac7c9f7e683000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 -DMLOG APPLIED_TRANSACTION 20 05ad7757e300d1a90c82a6232ab101000e19e007ffa6d76a3c7b09341ed290f314000000130000000100000014feb813060ce9c5039848fc1190635ebb123d24c4f8b6504631c01377010164640000000000000000000000000000000001010000010000000000eab0c717e2beac8466c4e2211032d37823d9bfa519389033a8a3d9a0a8668d2db29b951b000000000000001b00000000000000010000000000eab0c71a0000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274120000000000000000eab0c700000012609f7a8538b401a5211c8be4a30149d160f047a469f69ac7c9f7e68300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000164000005ad7757e300d1a90c82a6232ab101000e19e007ffa6d76a3c7b09341ed290f314000000130000000100000014feb813060ce9c5039848fc1190635ebb123d24c4f8b6504631c0137700000000000000 -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":19,"value_ex":338373063,"consumed":339},"average_block_cpu_usage":{"last_ordinal":19,"value_ex":131837053,"consumed":232},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1067621,"virtual_cpu_limit":203627} -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":20,"value_ex":335553287,"consumed":336},"average_block_cpu_usage":{"last_ordinal":20,"value_ex":131571744,"consumed":231},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1068689,"virtual_cpu_limit":203830} -DMLOG ACCEPTED_BLOCK_V2 00000014feb813060ce9c5039848fc1190635ebb123d24c4f8b6504631c01377 20 1 130000000000000000eab0c700000013466d19b8db4685541bb62c66d280573c567a39c6dc2d4bf3051820c5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000010020f9bceff146de25f9b9437a477976a39c6237485a58e1d278c19767849ebd1834228b8cfdbc0193bfaf55c5a73137c5ba407def78c64cee1722aea2cc5ec6edbe000000 01000000000000000100000038000f422e1b510f76f0aa44076b67fa63a7a389df196086cf53852d8b035ed96db49ecd955102366eecd5107533284d343792a41ca92b591a4021fbf3ea0a8d01000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f59800000000c119733edc8d53c8b93bb666d36400a3b1da3311c5ea2944bda27d921a4de22d0001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":19,"value_ex":269054,"consumed":1},"cpu_usage":{"last_ordinal":19,"value_ex":103583,"consumed":101},"ram_usage":424170} +DMLOG TRX_OP CREATE onblock c9eeab4e81e6ec74952e2c9bcea1077382342490d93c4d196738a0ea207af1bd 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274120000000000000000eab0c700000012829bcfe68c1e540089ca1efd3935a17a6fc036e78a2907bcd119624b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 +DMLOG APPLIED_TRANSACTION 20 c9eeab4e81e6ec74952e2c9bcea1077382342490d93c4d196738a0ea207af1bd14000000130000000100000014fd976cf65ba557cae581b96eeb9f26ef66d1f620b742043204db5d84010164640000000000000000000000000000000001010000010000000000eab0c75e6ce3b2b09bdd952c7133c0614af6f682b7472a99361a245f3eebbef288b51e1b000000000000001b00000000000000010000000000eab0c71a0000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274120000000000000000eab0c700000012829bcfe68c1e540089ca1efd3935a17a6fc036e78a2907bcd119624b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001640000c9eeab4e81e6ec74952e2c9bcea1077382342490d93c4d196738a0ea207af1bd14000000130000000100000014fd976cf65ba557cae581b96eeb9f26ef66d1f620b742043204db5d8400000000000000 +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":19,"value_ex":339087387,"consumed":340},"average_block_cpu_usage":{"last_ordinal":19,"value_ex":131837053,"consumed":232},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1067621,"virtual_cpu_limit":203627} +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":20,"value_ex":336261658,"consumed":337},"average_block_cpu_usage":{"last_ordinal":20,"value_ex":131571744,"consumed":231},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1068689,"virtual_cpu_limit":203830} +DMLOG ACCEPTED_BLOCK_V2 00000014fd976cf65ba557cae581b96eeb9f26ef66d1f620b742043204db5d84 20 1 130000000000000000eab0c70000001389bedc8e39249d03e000a2b6f6d20541a4ad79cba5c09111d26466a300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001001f027a47f1b8449ed4186e848a35d6b7f115e4e30717ef986d1f29efde1ed586994f0e2c415ca70271537658337499af90fee99d7ac993e177f164797121f011d9000000 010000000000000001000000f02e6e3318cbbbc76ac80a9cecd23703f440ee6f11ae24c202b85b36163c364f076a57496ed95386e1aa8d2ac6a3a5d83a2c99b92e17d64d7bdb52f969f8b5e001000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f5980000000073100d0b33256587dd64434f1e66d980e0edaed75e0f7d3e2cc317ebbdcc9d1d0001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 DMLOG START_BLOCK 21 DMLOG CREATION_OP ROOT 0 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":20,"value_ex":268486,"consumed":1},"cpu_usage":{"last_ordinal":20,"value_ex":104161,"consumed":101},"ram_usage":423424} -DMLOG TRX_OP CREATE onblock f9633c32b5b77dc2a64e71f07412f40daadfd97f69e66b466428880f98160958 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274130000000000000000eab0c700000013466d19b8db4685541bb62c66d280573c567a39c6dc2d4bf3051820c5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 -DMLOG APPLIED_TRANSACTION 21 f9633c32b5b77dc2a64e71f07412f40daadfd97f69e66b466428880f98160958150000001400000001000000155e9b8f3e98ba924588e972be4ce384eaf354766353b274762f500200010164640000000000000000000000000000000001010000010000000000eab0c7a69e87083b9caa6ff88e74ca0cef2a1d6963a4dfab83f636634708a46e9ff1ca1c000000000000001c00000000000000010000000000eab0c71b0000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274130000000000000000eab0c700000013466d19b8db4685541bb62c66d280573c567a39c6dc2d4bf3051820c5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001640000f9633c32b5b77dc2a64e71f07412f40daadfd97f69e66b466428880f98160958150000001400000001000000155e9b8f3e98ba924588e972be4ce384eaf354766353b274762f50020000000000000000 -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":20,"value_ex":335553287,"consumed":336},"average_block_cpu_usage":{"last_ordinal":20,"value_ex":131571744,"consumed":231},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1068689,"virtual_cpu_limit":203830} -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":21,"value_ex":332757009,"consumed":333},"average_block_cpu_usage":{"last_ordinal":21,"value_ex":131308646,"consumed":231},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1069758,"virtual_cpu_limit":204034} -DMLOG ACCEPTED_BLOCK_V2 000000155e9b8f3e98ba924588e972be4ce384eaf354766353b274762f500200 21 1 140000000000000000eab0c700000014feb813060ce9c5039848fc1190635ebb123d24c4f8b6504631c0137700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001001fc60b2e75089e9d8691660cbfc55e03f18e277880cd8b9b9a2e7dafab85e40988422a15dea020376f49b2e3055f5b08426cd6a3152c7e3370b458087a26c2eee3000000 010000000000000001000000f2df62fc09143f5b5ce16d3642372a5a41dacb5918488c546bfdf4d303e43f1669bbfb1ed1d02ed0a4e1aa4f7e88ccac64f1e199989c2ae73b07873058ff667101000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f59800000000d850924cbc3a9b2e92c1b0b57864af6839dc88f3eaae60de365520fd1b6068670001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":20,"value_ex":269052,"consumed":1},"cpu_usage":{"last_ordinal":20,"value_ex":104161,"consumed":101},"ram_usage":424170} +DMLOG TRX_OP CREATE onblock d165056f247c740410b2ed5830a3cf73c7ee390102d91836969a393cc6aeb727 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274130000000000000000eab0c70000001389bedc8e39249d03e000a2b6f6d20541a4ad79cba5c09111d26466a3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 +DMLOG APPLIED_TRANSACTION 21 d165056f247c740410b2ed5830a3cf73c7ee390102d91836969a393cc6aeb727150000001400000001000000155dab2f472815456a54661591224131887998418c31cc6bc05bd55ee1010164640000000000000000000000000000000001010000010000000000eab0c741b22863276bd9cc258b6601b5ba2d66672d9dfc105608fa2c4a6c27ef147ef21c000000000000001c00000000000000010000000000eab0c71b0000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274130000000000000000eab0c70000001389bedc8e39249d03e000a2b6f6d20541a4ad79cba5c09111d26466a3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001640000d165056f247c740410b2ed5830a3cf73c7ee390102d91836969a393cc6aeb727150000001400000001000000155dab2f472815456a54661591224131887998418c31cc6bc05bd55ee100000000000000 +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":20,"value_ex":336261658,"consumed":337},"average_block_cpu_usage":{"last_ordinal":20,"value_ex":131571744,"consumed":231},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1068689,"virtual_cpu_limit":203830} +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":21,"value_ex":333459477,"consumed":334},"average_block_cpu_usage":{"last_ordinal":21,"value_ex":131308646,"consumed":231},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1069758,"virtual_cpu_limit":204034} +DMLOG ACCEPTED_BLOCK_V2 000000155dab2f472815456a54661591224131887998418c31cc6bc05bd55ee1 21 1 140000000000000000eab0c700000014fd976cf65ba557cae581b96eeb9f26ef66d1f620b742043204db5d8400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001001f36f3965e41b4d9d1b1d0ff31795c941fe761eaea455a77bcbf8218861821ec0513cfee855080a4bfc3c43759102b269c3168076fc93bbbcb9e2db7fb5b24de6b000000 0100000000000000010000004914d79f87d055e4194135720422481d4b341396ea729f00a4a7dfc962238934b003124276d9b0c220a38fd947d07c09070ede05c2ba8732c751d2262d83207e01000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f59800000000279d24727e4024388c3a9c7f86ccb5f2358612d2a243218f322938f95726d79c0001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 DMLOG START_BLOCK 22 DMLOG CREATION_OP ROOT 0 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":21,"value_ex":268484,"consumed":1},"cpu_usage":{"last_ordinal":21,"value_ex":104739,"consumed":101},"ram_usage":423424} -DMLOG TRX_OP CREATE onblock d6be8d775dc766959c1633d8a0bb169c156e197e36c12cfe618e64dd572d484c 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274140000000000000000eab0c700000014feb813060ce9c5039848fc1190635ebb123d24c4f8b6504631c01377000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 -DMLOG APPLIED_TRANSACTION 22 d6be8d775dc766959c1633d8a0bb169c156e197e36c12cfe618e64dd572d484c160000001500000001000000168888a1df86973c58c2b9c80d21b64fc51c81cae106cc9f2942dbf39e010164640000000000000000000000000000000001010000010000000000eab0c76387a278ab11a378fef6dce5093015d9009edf03dcc9ee7b3f1618836824920e1d000000000000001d00000000000000010000000000eab0c71c0000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274140000000000000000eab0c700000014feb813060ce9c5039848fc1190635ebb123d24c4f8b6504631c01377000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001640000d6be8d775dc766959c1633d8a0bb169c156e197e36c12cfe618e64dd572d484c160000001500000001000000168888a1df86973c58c2b9c80d21b64fc51c81cae106cc9f2942dbf39e00000000000000 -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":21,"value_ex":332757009,"consumed":333},"average_block_cpu_usage":{"last_ordinal":21,"value_ex":131308646,"consumed":231},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1069758,"virtual_cpu_limit":204034} -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":22,"value_ex":329984033,"consumed":330},"average_block_cpu_usage":{"last_ordinal":22,"value_ex":131047741,"consumed":231},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1070828,"virtual_cpu_limit":204238} -DMLOG ACCEPTED_BLOCK_V2 000000168888a1df86973c58c2b9c80d21b64fc51c81cae106cc9f2942dbf39e 22 1 150000000000000000eab0c7000000155e9b8f3e98ba924588e972be4ce384eaf354766353b274762f5002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000100205e2345b9bbc804a93817e3011fdef81cc88e40ede7576f176ef788850f388b8b5c41e8ac177c9debf913b0fe22850958d08d2080031591e4e26d4b8b64361c22000000 010000000000000001000000dbef1a30c45bacb0b5cfa927e177b4218cb6c0656e537b9dd541c67ebb22cdf75a7df8ae2c19d2490fcd51186ebb7811c030846a958d7a12c6a1abdd76c46dde01000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f59800000000008bab78cac89091c6cd022694dfb6fef005694066f6c9ee11f3d29005fa89780001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":21,"value_ex":269050,"consumed":1},"cpu_usage":{"last_ordinal":21,"value_ex":104739,"consumed":101},"ram_usage":424170} +DMLOG TRX_OP CREATE onblock fe44a2f76ed119c80074641a69964d985ac03595afc620d12f5bcfd97d0dd742 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274140000000000000000eab0c700000014fd976cf65ba557cae581b96eeb9f26ef66d1f620b742043204db5d84000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 +DMLOG APPLIED_TRANSACTION 22 fe44a2f76ed119c80074641a69964d985ac03595afc620d12f5bcfd97d0dd74216000000150000000100000016e3b7d3f89aa45ab130d75cb91feb8ebeab74831d4f42251e060dd9b1010164640000000000000000000000000000000001010000010000000000eab0c79bd812719142120f8ca6ece875168d148d27084516661b97ebfc37b261f3ae551d000000000000001d00000000000000010000000000eab0c71c0000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274140000000000000000eab0c700000014fd976cf65ba557cae581b96eeb9f26ef66d1f620b742043204db5d84000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001640000fe44a2f76ed119c80074641a69964d985ac03595afc620d12f5bcfd97d0dd74216000000150000000100000016e3b7d3f89aa45ab130d75cb91feb8ebeab74831d4f42251e060dd9b100000000000000 +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":21,"value_ex":333459477,"consumed":334},"average_block_cpu_usage":{"last_ordinal":21,"value_ex":131308646,"consumed":231},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1069758,"virtual_cpu_limit":204034} +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":22,"value_ex":330680648,"consumed":331},"average_block_cpu_usage":{"last_ordinal":22,"value_ex":131047741,"consumed":231},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1070828,"virtual_cpu_limit":204238} +DMLOG ACCEPTED_BLOCK_V2 00000016e3b7d3f89aa45ab130d75cb91feb8ebeab74831d4f42251e060dd9b1 22 1 150000000000000000eab0c7000000155dab2f472815456a54661591224131887998418c31cc6bc05bd55ee100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001001f91dcb64b7eed02bccec208ce7fedca3746e79420115465b040b814a40f86c1cb6935a3460392486e1beac6a8fea99c61dde3eccb84ab54e0a3c66a944693714f000000 010000000000000001000000bc4acb99fe55a443071e6ed3e4f6874b81f075774edab0855512f5a6fa3a0b73dfb06bbc25df7e6272be8d2fbbf205cca34ea3563fcf8486e2fa20ef724344c201000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f59800000000249bdb3296de7bbd1077e10afe420855c992cdc8d3da8f5fe390d4c2480e20040001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 DMLOG START_BLOCK 23 DMLOG CREATION_OP ROOT 0 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":22,"value_ex":268482,"consumed":1},"cpu_usage":{"last_ordinal":22,"value_ex":105317,"consumed":101},"ram_usage":423424} -DMLOG TRX_OP CREATE onblock 3cb8926dff3347f713c0d643534ce39a8df02fa09786c3a858652d31a37aeebe 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274150000000000000000eab0c7000000155e9b8f3e98ba924588e972be4ce384eaf354766353b274762f500200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 -DMLOG APPLIED_TRANSACTION 23 3cb8926dff3347f713c0d643534ce39a8df02fa09786c3a858652d31a37aeebe17000000160000000100000017d6c18d5b1a0a24fc6d2788c5f36a9559b90169c4a9415c8694060646010164640000000000000000000000000000000001010000010000000000eab0c76e6b58a09a616502326f7bf2a8d8c48b2a8206f760018614ae7210df2defbf8a1e000000000000001e00000000000000010000000000eab0c71d0000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274150000000000000000eab0c7000000155e9b8f3e98ba924588e972be4ce384eaf354766353b274762f5002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000016400003cb8926dff3347f713c0d643534ce39a8df02fa09786c3a858652d31a37aeebe17000000160000000100000017d6c18d5b1a0a24fc6d2788c5f36a9559b90169c4a9415c869406064600000000000000 -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":22,"value_ex":329984033,"consumed":330},"average_block_cpu_usage":{"last_ordinal":22,"value_ex":131047741,"consumed":231},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1070828,"virtual_cpu_limit":204238} -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":23,"value_ex":327234166,"consumed":328},"average_block_cpu_usage":{"last_ordinal":23,"value_ex":130789010,"consumed":230},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1071899,"virtual_cpu_limit":204442} -DMLOG ACCEPTED_BLOCK_V2 00000017d6c18d5b1a0a24fc6d2788c5f36a9559b90169c4a9415c8694060646 23 1 160000000000000000eab0c7000000168888a1df86973c58c2b9c80d21b64fc51c81cae106cc9f2942dbf39e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001001f7f439eb64dc08be634d131749b90f37084deaa9a21ebe05b73f2d29a3beaadc23721b636fa45f4c442df5896a379e3c8f3bcd6751c2a61eb99a65393a418c9e7000000 010000000000000001000000d3ca556b4eef6cc1a4d109ab1dea8836f3b287a50cd5ec36059c31ded7cb2d04fb15742e43a534473584e2af0ea99349097bbe6c5354b5c9a6cbfad7952585be01000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f59800000000fd558bec626b75264d5a404fca6334f01893051ae683bdee893830a5b7ad15040001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":22,"value_ex":269048,"consumed":1},"cpu_usage":{"last_ordinal":22,"value_ex":105317,"consumed":101},"ram_usage":424170} +DMLOG TRX_OP CREATE onblock 0cc235a34d5c873843f926374416ad05998ff2af32312fb8186f3d362e898894 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274150000000000000000eab0c7000000155dab2f472815456a54661591224131887998418c31cc6bc05bd55ee1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 +DMLOG APPLIED_TRANSACTION 23 0cc235a34d5c873843f926374416ad05998ff2af32312fb8186f3d362e898894170000001600000001000000176766ec5d8bcfa1f2b587fe12d5ebbc4a48c6038cf26566c80565851b010164640000000000000000000000000000000001010000010000000000eab0c7483c09d580b4e4b8695d016202198f5f675330d7aaa8e46d09293d43e498849b1e000000000000001e00000000000000010000000000eab0c71d0000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274150000000000000000eab0c7000000155dab2f472815456a54661591224131887998418c31cc6bc05bd55ee10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000016400000cc235a34d5c873843f926374416ad05998ff2af32312fb8186f3d362e898894170000001600000001000000176766ec5d8bcfa1f2b587fe12d5ebbc4a48c6038cf26566c80565851b00000000000000 +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":22,"value_ex":330680648,"consumed":331},"average_block_cpu_usage":{"last_ordinal":22,"value_ex":131047741,"consumed":231},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1070828,"virtual_cpu_limit":204238} +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":23,"value_ex":327924975,"consumed":328},"average_block_cpu_usage":{"last_ordinal":23,"value_ex":130789010,"consumed":230},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1071899,"virtual_cpu_limit":204442} +DMLOG ACCEPTED_BLOCK_V2 000000176766ec5d8bcfa1f2b587fe12d5ebbc4a48c6038cf26566c80565851b 23 1 160000000000000000eab0c700000016e3b7d3f89aa45ab130d75cb91feb8ebeab74831d4f42251e060dd9b1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000010020e9d18107a5e24713bb97e702fa0cde06c1183874b47443a7b175d257eb6663217e3c447b6a034af43b1d578a515f3f33c0fb98bd3788c00c28a052b857c6f299000000 01000000000000000100000053781cad99378566136b317a87cf5252d647a83fbfaf205e14d40e832a0382f6bae07b884505e6882835c63bda9f04f23093655800f827c7404a659b97694fc401000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f59800000000cf6bf170ae658bfdf5806a1bd045a97d436d8778e6314794f5b23c84c92a6ace0001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 DMLOG START_BLOCK 24 DMLOG CREATION_OP ROOT 0 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":23,"value_ex":268480,"consumed":1},"cpu_usage":{"last_ordinal":23,"value_ex":105895,"consumed":101},"ram_usage":423424} -DMLOG TRX_OP CREATE onblock f686b38cf3165e8b3f3a23062cc57553c8414d6f12d6d86987109957c21fd224 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274160000000000000000eab0c7000000168888a1df86973c58c2b9c80d21b64fc51c81cae106cc9f2942dbf39e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 -DMLOG APPLIED_TRANSACTION 24 f686b38cf3165e8b3f3a23062cc57553c8414d6f12d6d86987109957c21fd2241800000017000000010000001880e80b87ca80e3e8e856e862451fa751d38c984aa00c052648798673010164640000000000000000000000000000000001010000010000000000eab0c734a346fa89de69812a5f1f0200b3d755b3a196ccb9627d88fc3cc9795eace59b1f000000000000001f00000000000000010000000000eab0c71e0000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274160000000000000000eab0c7000000168888a1df86973c58c2b9c80d21b64fc51c81cae106cc9f2942dbf39e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001640000f686b38cf3165e8b3f3a23062cc57553c8414d6f12d6d86987109957c21fd2241800000017000000010000001880e80b87ca80e3e8e856e862451fa751d38c984aa00c05264879867300000000000000 -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":23,"value_ex":327234166,"consumed":328},"average_block_cpu_usage":{"last_ordinal":23,"value_ex":130789010,"consumed":230},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1071899,"virtual_cpu_limit":204442} -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":24,"value_ex":324507214,"consumed":325},"average_block_cpu_usage":{"last_ordinal":24,"value_ex":130532435,"consumed":230},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1072971,"virtual_cpu_limit":204646} -DMLOG ACCEPTED_BLOCK_V2 0000001880e80b87ca80e3e8e856e862451fa751d38c984aa00c052648798673 24 1 170000000000000000eab0c700000017d6c18d5b1a0a24fc6d2788c5f36a9559b90169c4a9415c8694060646000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000010020c2b5419bdea0b96cc92661a7769b994ac5dd9b33cf91aaff19d54f7978e932a44962acceb40507aa96800496d7e3067b5b99d01ff53c22baa73b94cef2ef4354000000 0100000000000000010000007511555c753ec295ebdf961e8ad44bb47faef0aacc7a41fedc9f1a8b50d3ea4e8de20a8df1f48a5bba872572eefb6e27cd97602cf84a1c76a39260507ff6b30201000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f5980000000031b09ffa45d9bfc9ced05bad4416471d80f5733a6359dd2615b6c4f791506ac60001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":23,"value_ex":269046,"consumed":1},"cpu_usage":{"last_ordinal":23,"value_ex":105895,"consumed":101},"ram_usage":424170} +DMLOG TRX_OP CREATE onblock 3c279f2102342cc6488748886d0b35c0c03688a7b976c7c045f7f0b830646af4 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274160000000000000000eab0c700000016e3b7d3f89aa45ab130d75cb91feb8ebeab74831d4f42251e060dd9b1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 +DMLOG APPLIED_TRANSACTION 24 3c279f2102342cc6488748886d0b35c0c03688a7b976c7c045f7f0b830646af418000000170000000100000018217844872b182f4c9a7649ba7f4d2638c0d0a9ed46478380c34e21b3010164640000000000000000000000000000000001010000010000000000eab0c71aea9b56c073a504eb4085d032b0c774697d883da245de538c5e8cabc6bb7e681f000000000000001f00000000000000010000000000eab0c71e0000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274160000000000000000eab0c700000016e3b7d3f89aa45ab130d75cb91feb8ebeab74831d4f42251e060dd9b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000016400003c279f2102342cc6488748886d0b35c0c03688a7b976c7c045f7f0b830646af418000000170000000100000018217844872b182f4c9a7649ba7f4d2638c0d0a9ed46478380c34e21b300000000000000 +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":23,"value_ex":327924975,"consumed":328},"average_block_cpu_usage":{"last_ordinal":23,"value_ex":130789010,"consumed":230},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1071899,"virtual_cpu_limit":204442} +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":24,"value_ex":325192266,"consumed":326},"average_block_cpu_usage":{"last_ordinal":24,"value_ex":130532435,"consumed":230},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1072971,"virtual_cpu_limit":204646} +DMLOG ACCEPTED_BLOCK_V2 00000018217844872b182f4c9a7649ba7f4d2638c0d0a9ed46478380c34e21b3 24 1 170000000000000000eab0c7000000176766ec5d8bcfa1f2b587fe12d5ebbc4a48c6038cf26566c80565851b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001001f74996349b862806c1f15deaa40877f21af4f28e2be3d8180f2901e0c3d50e04828eb6d673a4def605fa15559a814d56b412cf37894b080df87b10928c2f60352000000 0100000000000000010000005b023a9733ec96ec66923516b1ab152cfb56f80e06d35a8d04b186bde3d05c1e292591c5b9c4f4ce0d66580565e7483b9dbae0bf9dddbbebd5e49fff6903b24501000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f5980000000067ff8188cf1904183bb855adbb004e1f6ef1015049cb8000c7284744e9ee2dfc0001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 DMLOG START_BLOCK 25 DMLOG CREATION_OP ROOT 0 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":24,"value_ex":268478,"consumed":1},"cpu_usage":{"last_ordinal":24,"value_ex":106473,"consumed":101},"ram_usage":423424} -DMLOG TRX_OP CREATE onblock ff6a08af03b38f5eabde0d093138db8a491f41c03ef33cb79fc8e0287aef19a9 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274170000000000000000eab0c700000017d6c18d5b1a0a24fc6d2788c5f36a9559b90169c4a9415c8694060646000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 -DMLOG APPLIED_TRANSACTION 25 ff6a08af03b38f5eabde0d093138db8a491f41c03ef33cb79fc8e0287aef19a9190000001800000001000000193de1f74a668877d9a6ce9e58de5c13564d2e5430b47fe7ac7ac6b207010164640000000000000000000000000000000001010000010000000000eab0c7bfec9958e0e7629464984729812de7f7441f1f5a4151f1a4478bc9f7e01657dd20000000000000002000000000000000010000000000eab0c71f0000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274170000000000000000eab0c700000017d6c18d5b1a0a24fc6d2788c5f36a9559b90169c4a9415c8694060646000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001640000ff6a08af03b38f5eabde0d093138db8a491f41c03ef33cb79fc8e0287aef19a9190000001800000001000000193de1f74a668877d9a6ce9e58de5c13564d2e5430b47fe7ac7ac6b20700000000000000 -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":24,"value_ex":324507214,"consumed":325},"average_block_cpu_usage":{"last_ordinal":24,"value_ex":130532435,"consumed":230},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1072971,"virtual_cpu_limit":204646} -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":25,"value_ex":321802987,"consumed":322},"average_block_cpu_usage":{"last_ordinal":25,"value_ex":130277998,"consumed":230},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1074045,"virtual_cpu_limit":204850} -DMLOG ACCEPTED_BLOCK_V2 000000193de1f74a668877d9a6ce9e58de5c13564d2e5430b47fe7ac7ac6b207 25 1 180000000000000000eab0c70000001880e80b87ca80e3e8e856e862451fa751d38c984aa00c052648798673000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000010020287ad10fe6fba43adf03a4df7dfbe9ad77b07cc0b202b4463fa8c26f657e135136f133e4f34919150eccfdf0d2d4e4066a2b6f44ab9c19038ef3bfa469a59f75000000 010000000000000001000000d96629f5c93380fbb309d761a3b853d0a0f8470dc31e80a7a8c200648c0c94e49ad060cf5e9de9e76c7b8f766e312b1b084bccff675ed7ca613fb7f84b41eaf001000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f598000000003058908dd88704cf30cee195a0f3260173f888381dabc5ea451030899a8fd43b0001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":24,"value_ex":269044,"consumed":1},"cpu_usage":{"last_ordinal":24,"value_ex":106473,"consumed":101},"ram_usage":424170} +DMLOG TRX_OP CREATE onblock 69578700ba68aedbeda4c4afd7c37dec52e3a1b20eca4ef52c75e5ff0ae7f070 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274170000000000000000eab0c7000000176766ec5d8bcfa1f2b587fe12d5ebbc4a48c6038cf26566c80565851b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 +DMLOG APPLIED_TRANSACTION 25 69578700ba68aedbeda4c4afd7c37dec52e3a1b20eca4ef52c75e5ff0ae7f070190000001800000001000000195d29c306cf5f5399cbe429aa82ce743f12be665446069421ac65ed4a010164640000000000000000000000000000000001010000010000000000eab0c70589516dc0bed7b5ae76296d9af6dd6ae8f7e0d8f3c1f7b4c8c036e8a0fac79f20000000000000002000000000000000010000000000eab0c71f0000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274170000000000000000eab0c7000000176766ec5d8bcfa1f2b587fe12d5ebbc4a48c6038cf26566c80565851b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000164000069578700ba68aedbeda4c4afd7c37dec52e3a1b20eca4ef52c75e5ff0ae7f070190000001800000001000000195d29c306cf5f5399cbe429aa82ce743f12be665446069421ac65ed4a00000000000000 +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":24,"value_ex":325192266,"consumed":326},"average_block_cpu_usage":{"last_ordinal":24,"value_ex":130532435,"consumed":230},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1072971,"virtual_cpu_limit":204646} +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":25,"value_ex":322482330,"consumed":323},"average_block_cpu_usage":{"last_ordinal":25,"value_ex":130277998,"consumed":230},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1074045,"virtual_cpu_limit":204850} +DMLOG ACCEPTED_BLOCK_V2 000000195d29c306cf5f5399cbe429aa82ce743f12be665446069421ac65ed4a 25 1 180000000000000000eab0c700000018217844872b182f4c9a7649ba7f4d2638c0d0a9ed46478380c34e21b300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001001fc0e398dc442446c59500608d17534e8e898e1eee861188f1a3e9c0a14bdf86b10992a1961e5e51df2940b47aed23280f853ec7a36ba81a6399c69ae0cabe8ced000000 010000000000000001000000862b9de2a83b378f18209849365688e20654470915b9be336b30e6a2c0f3a5e3bc8cbcc172ae6606710f3cd07803086533fbba704f6299fa25dff5daee192b4201000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f59800000000387643eeb0f65a5163cc7c02a8b7c2dd9b07c662eafeb4aac83dcc51f1d7c7930001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 DMLOG START_BLOCK 26 DMLOG CREATION_OP ROOT 0 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":25,"value_ex":268476,"consumed":1},"cpu_usage":{"last_ordinal":25,"value_ex":107051,"consumed":101},"ram_usage":423424} -DMLOG TRX_OP CREATE onblock 25de4f6ac0e3fe6e7b2a1cb362ac1b071fca5fb636c0bb2b6288993d3a92c747 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274180000000000000000eab0c70000001880e80b87ca80e3e8e856e862451fa751d38c984aa00c052648798673000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 -DMLOG APPLIED_TRANSACTION 26 25de4f6ac0e3fe6e7b2a1cb362ac1b071fca5fb636c0bb2b6288993d3a92c7471a00000019000000010000001a335b67d7cb4540289acef37f9519360f64ed729c7a6648baec3896d8010164640000000000000000000000000000000001010000010000000000eab0c7eeeb8f22ca7971230bbd0a73a799de1c0445b633b2cd7cb6da9cbcc75bc17dd821000000000000002100000000000000010000000000eab0c7200000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274180000000000000000eab0c70000001880e80b87ca80e3e8e856e862451fa751d38c984aa00c05264879867300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000164000025de4f6ac0e3fe6e7b2a1cb362ac1b071fca5fb636c0bb2b6288993d3a92c7471a00000019000000010000001a335b67d7cb4540289acef37f9519360f64ed729c7a6648baec3896d800000000000000 -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":25,"value_ex":321802987,"consumed":322},"average_block_cpu_usage":{"last_ordinal":25,"value_ex":130277998,"consumed":230},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1074045,"virtual_cpu_limit":204850} -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":26,"value_ex":319121295,"consumed":320},"average_block_cpu_usage":{"last_ordinal":26,"value_ex":130025682,"consumed":230},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1075120,"virtual_cpu_limit":205055} -DMLOG ACCEPTED_BLOCK_V2 0000001a335b67d7cb4540289acef37f9519360f64ed729c7a6648baec3896d8 26 1 190000000000000000eab0c7000000193de1f74a668877d9a6ce9e58de5c13564d2e5430b47fe7ac7ac6b2070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000100204f668f74f11f80d1e14a57c1c74f34b8635efc212e1604e749be7643f9d079f07f3ff4c8f6e7c5a9919d74af99d4d3f94ff31e797a02932a2a36f03049391dc8000000 010000000000000001000000f279bfde44db7ea26b657e3139be08591447296468e454f29fa575276efbd64f1e3a32538e1196716c1b0eade146746681268841c85cd7f32ea7063b288ac69f01000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f59800000000cec6604af9446a9ee7ac108af9d0e8d13d81ab8d9d88c6319f56d386a1430de30001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":25,"value_ex":269042,"consumed":1},"cpu_usage":{"last_ordinal":25,"value_ex":107051,"consumed":101},"ram_usage":424170} +DMLOG TRX_OP CREATE onblock 54d1e1fd456e650bfbcca9367cd732f18352c25c871324a550fda75b4fc84fe6 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274180000000000000000eab0c700000018217844872b182f4c9a7649ba7f4d2638c0d0a9ed46478380c34e21b3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 +DMLOG APPLIED_TRANSACTION 26 54d1e1fd456e650bfbcca9367cd732f18352c25c871324a550fda75b4fc84fe61a00000019000000010000001a593df17117ab2933a0ef6ad73eaf16ad294da663a1e9096f59b2af0f010164640000000000000000000000000000000001010000010000000000eab0c72dae5da3bc4461d112e08245cde4b16bc66ca00f96bd71e18e4cca4a61171a9d21000000000000002100000000000000010000000000eab0c7200000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274180000000000000000eab0c700000018217844872b182f4c9a7649ba7f4d2638c0d0a9ed46478380c34e21b300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000164000054d1e1fd456e650bfbcca9367cd732f18352c25c871324a550fda75b4fc84fe61a00000019000000010000001a593df17117ab2933a0ef6ad73eaf16ad294da663a1e9096f59b2af0f00000000000000 +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":25,"value_ex":322482330,"consumed":323},"average_block_cpu_usage":{"last_ordinal":25,"value_ex":130277998,"consumed":230},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1074045,"virtual_cpu_limit":204850} +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":26,"value_ex":319794977,"consumed":320},"average_block_cpu_usage":{"last_ordinal":26,"value_ex":130025682,"consumed":230},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1075120,"virtual_cpu_limit":205055} +DMLOG ACCEPTED_BLOCK_V2 0000001a593df17117ab2933a0ef6ad73eaf16ad294da663a1e9096f59b2af0f 26 1 190000000000000000eab0c7000000195d29c306cf5f5399cbe429aa82ce743f12be665446069421ac65ed4a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000010020306786673736c40cc9035744bdd6e4c1d11e9f6e34330da57e2f6921b75ca6fe119a14af4e883c64a64e90b76ccd39a1455c06639e4853d994e8f72904a43f27000000 010000000000000001000000c19311af102f5cd046996b7b561eca70266d94e8ce25634e82e5022a5398e443eddf66136c5869193e3b17f852f5872f2cef154994d93593c58ec461e1c11fff01000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f598000000006b2821bb9eed60e44759757cc7ba60fddfb986e8e69cb3bf39fe02e51dc2c39f0001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 DMLOG START_BLOCK 27 DMLOG CREATION_OP ROOT 0 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":26,"value_ex":268474,"consumed":1},"cpu_usage":{"last_ordinal":26,"value_ex":107629,"consumed":101},"ram_usage":423424} -DMLOG TRX_OP CREATE onblock a7e9971ee3d4938656d07e224d0bb859f4db9a7d29b4a025b8044e166296bf1c 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274190000000000000000eab0c7000000193de1f74a668877d9a6ce9e58de5c13564d2e5430b47fe7ac7ac6b207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 -DMLOG APPLIED_TRANSACTION 27 a7e9971ee3d4938656d07e224d0bb859f4db9a7d29b4a025b8044e166296bf1c1b0000001a000000010000001bdf17add00cfd4a9f085bba8b45d040529c2f548b5e4745796445b183010164640000000000000000000000000000000001010000010000000000eab0c7ca154ff0eed4d2078ff2d1dad1a9b21488a6686775834c34e773d253a2e4070522000000000000002200000000000000010000000000eab0c7210000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274190000000000000000eab0c7000000193de1f74a668877d9a6ce9e58de5c13564d2e5430b47fe7ac7ac6b207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001640000a7e9971ee3d4938656d07e224d0bb859f4db9a7d29b4a025b8044e166296bf1c1b0000001a000000010000001bdf17add00cfd4a9f085bba8b45d040529c2f548b5e4745796445b18300000000000000 -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":26,"value_ex":319121295,"consumed":320},"average_block_cpu_usage":{"last_ordinal":26,"value_ex":130025682,"consumed":230},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1075120,"virtual_cpu_limit":205055} -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":27,"value_ex":316461950,"consumed":317},"average_block_cpu_usage":{"last_ordinal":27,"value_ex":129775468,"consumed":229},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1076196,"virtual_cpu_limit":205260} -DMLOG ACCEPTED_BLOCK_V2 0000001bdf17add00cfd4a9f085bba8b45d040529c2f548b5e4745796445b183 27 1 1a0000000000000000eab0c70000001a335b67d7cb4540289acef37f9519360f64ed729c7a6648baec3896d800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001001f3205e9dcfb3bd0dc556cec9758de93d87818929c5b46c13685f799fb0fcba3d83f6cec1ae58dc815c2fab36a8cd10fc4ceda73f4b8cb7045094081f76edd992d000000 010000000000000001000000b9eb3c03d616739a91dc6be8db2607958c5c7d610820ff5e01f9bd3c058962a6c2419cfffc2ed9aa3b86bae0f9a8afa6eddf25242543df785cd375fd6590907f01000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f59800000000e674cc3388a0ef164f04509ca56d0f45ae32d978b9746290b25a19d760aff8b00001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":26,"value_ex":269040,"consumed":1},"cpu_usage":{"last_ordinal":26,"value_ex":107629,"consumed":101},"ram_usage":424170} +DMLOG TRX_OP CREATE onblock 1bcaaf3f3a6cc9fd091ff3e0de68631c42a584dbcabda9cc90c2b5bda29bd684 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274190000000000000000eab0c7000000195d29c306cf5f5399cbe429aa82ce743f12be665446069421ac65ed4a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 +DMLOG APPLIED_TRANSACTION 27 1bcaaf3f3a6cc9fd091ff3e0de68631c42a584dbcabda9cc90c2b5bda29bd6841b0000001a000000010000001b5674ad8e867097a27b110c428c04166c509c8523db20047cdeca5996010164640000000000000000000000000000000001010000010000000000eab0c70819d2af60a5896917e9aa5a6827c40651ff3441488c82c35cf54025489e339522000000000000002200000000000000010000000000eab0c7210000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed323274190000000000000000eab0c7000000195d29c306cf5f5399cbe429aa82ce743f12be665446069421ac65ed4a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000016400001bcaaf3f3a6cc9fd091ff3e0de68631c42a584dbcabda9cc90c2b5bda29bd6841b0000001a000000010000001b5674ad8e867097a27b110c428c04166c509c8523db20047cdeca599600000000000000 +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":26,"value_ex":319794977,"consumed":320},"average_block_cpu_usage":{"last_ordinal":26,"value_ex":130025682,"consumed":230},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1075120,"virtual_cpu_limit":205055} +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":27,"value_ex":317130018,"consumed":318},"average_block_cpu_usage":{"last_ordinal":27,"value_ex":129775468,"consumed":229},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1076196,"virtual_cpu_limit":205260} +DMLOG ACCEPTED_BLOCK_V2 0000001b5674ad8e867097a27b110c428c04166c509c8523db20047cdeca5996 27 1 1a0000000000000000eab0c70000001a593df17117ab2933a0ef6ad73eaf16ad294da663a1e9096f59b2af0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000010020350a679cf53479e6d5c11f3a6fcd8bdb92d42811dda84a17233ec61171708e65176c899754c9070520ee7e9687c43e278b0ed5c3bc2abc98f4a9c093617cef52000000 010000000000000001000000980665086ca8644ed830c20f8ce3364b78fd70c691ab76025c3dbbe5130b7fe57f0f6f2ae5196e8ec4a36ae468e022688e587d9b958b5acca4704a1a491b205f01000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f59800000000f41b2653779fbb72ba8dbaf4e4dcc588ecf05419e4e72c1a4fb756b279318d870001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 DMLOG START_BLOCK 28 DMLOG CREATION_OP ROOT 0 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":27,"value_ex":268472,"consumed":1},"cpu_usage":{"last_ordinal":27,"value_ex":108207,"consumed":101},"ram_usage":423424} -DMLOG TRX_OP CREATE onblock 73a29d1bd1d87b49baa4beda414146d76984ad60380420044b9784f65894116f 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232741a0000000000000000eab0c70000001a335b67d7cb4540289acef37f9519360f64ed729c7a6648baec3896d8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 -DMLOG APPLIED_TRANSACTION 28 73a29d1bd1d87b49baa4beda414146d76984ad60380420044b9784f65894116f1c0000001b000000010000001c9e94475d52e803613e3523345b5706670537aab0c9708c45134c304b010164640000000000000000000000000000000001010000010000000000eab0c7d87cc3f93acb33b89180446e1a10913c6300ddb5d71c0f5e78af9d118e385bfc23000000000000002300000000000000010000000000eab0c7220000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232741a0000000000000000eab0c70000001a335b67d7cb4540289acef37f9519360f64ed729c7a6648baec3896d800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000164000073a29d1bd1d87b49baa4beda414146d76984ad60380420044b9784f65894116f1c0000001b000000010000001c9e94475d52e803613e3523345b5706670537aab0c9708c45134c304b00000000000000 -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":27,"value_ex":316461950,"consumed":317},"average_block_cpu_usage":{"last_ordinal":27,"value_ex":129775468,"consumed":229},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1076196,"virtual_cpu_limit":205260} -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":28,"value_ex":313824767,"consumed":314},"average_block_cpu_usage":{"last_ordinal":28,"value_ex":129527339,"consumed":229},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1077273,"virtual_cpu_limit":205465} -DMLOG ACCEPTED_BLOCK_V2 0000001c9e94475d52e803613e3523345b5706670537aab0c9708c45134c304b 28 1 1b0000000000000000eab0c70000001bdf17add00cfd4a9f085bba8b45d040529c2f548b5e4745796445b1830000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000100206d04e50ee0885a62e662a425662a08257d25cf4c3dde8cf9cd8360cea4528c593450d7d8c4afd317c9c64f7dfa991e35649cc39b93b0075446f142cd929b06ca000000 01000000000000000100000005c83b41a23d0123764cfdc4e0ec0d3a1fb2bc1029e4eeda15b02264d13f7b9ade0a73ff44dbd3e5834b1560f1baef6fc13a17ccf3f87eab4bbfd3650e55c48e01000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f598000000007b4fc49ebccbc5aa8d4e6c7e941b307c6f78f66ce973e3e73fd04355cf2519120001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":27,"value_ex":269038,"consumed":1},"cpu_usage":{"last_ordinal":27,"value_ex":108207,"consumed":101},"ram_usage":424170} +DMLOG TRX_OP CREATE onblock cb3e9de361d2d8c4837ca80116869ae81ad7cac7d6ff7aa060d92a5c5b571584 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232741a0000000000000000eab0c70000001a593df17117ab2933a0ef6ad73eaf16ad294da663a1e9096f59b2af0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 +DMLOG APPLIED_TRANSACTION 28 cb3e9de361d2d8c4837ca80116869ae81ad7cac7d6ff7aa060d92a5c5b5715841c0000001b000000010000001cc2ea0a832fb632cefff2f28bfc57b08d63e32a8c940ebea28c2fd5a4010164640000000000000000000000000000000001010000010000000000eab0c76b58ecda89dd8fcf64d8b436239a5c8d39790238e6c4f63a5697616500d7ce0c23000000000000002300000000000000010000000000eab0c7220000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232741a0000000000000000eab0c70000001a593df17117ab2933a0ef6ad73eaf16ad294da663a1e9096f59b2af0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001640000cb3e9de361d2d8c4837ca80116869ae81ad7cac7d6ff7aa060d92a5c5b5715841c0000001b000000010000001cc2ea0a832fb632cefff2f28bfc57b08d63e32a8c940ebea28c2fd5a400000000000000 +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":27,"value_ex":317130018,"consumed":318},"average_block_cpu_usage":{"last_ordinal":27,"value_ex":129775468,"consumed":229},"pending_net_usage":0,"pending_cpu_usage":100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1076196,"virtual_cpu_limit":205260} +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":28,"value_ex":314487267,"consumed":315},"average_block_cpu_usage":{"last_ordinal":28,"value_ex":129527339,"consumed":229},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1077273,"virtual_cpu_limit":205465} +DMLOG ACCEPTED_BLOCK_V2 0000001cc2ea0a832fb632cefff2f28bfc57b08d63e32a8c940ebea28c2fd5a4 28 1 1b0000000000000000eab0c70000001b5674ad8e867097a27b110c428c04166c509c8523db20047cdeca599600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001001fc44f594de376d246faa4d73e56b69db8245c114eff9d46680038561b0724e03e7f30eca248de247a0a5c11e12c10f0a35ae4776455faeca416a66d3c52e6c2f0000000 010000000000000001000000cd2977bb934b4229e5b326a819d1b05aa9bfb8cb95cf89aec18d8fa7d0104ceb9555f57be31f3f9f9e8dd89fc6fc5e98c598c64250e824d5838daf7181f40af001000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f59800000000dc8d4b86f92da37a6b72579b7a8755b046f101e971fee8d6e9cfd0a5501067260001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 DMLOG START_BLOCK 29 DMLOG CREATION_OP ROOT 0 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":28,"value_ex":268470,"consumed":1},"cpu_usage":{"last_ordinal":28,"value_ex":108785,"consumed":101},"ram_usage":423424} -DMLOG TRX_OP CREATE onblock d1cc06ed1d2a7896cbe552b73448596775caff0aaed5a027a081431a2a7caa39 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232741b0000000000000000eab0c70000001bdf17add00cfd4a9f085bba8b45d040529c2f548b5e4745796445b183000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 -DMLOG APPLIED_TRANSACTION 29 d1cc06ed1d2a7896cbe552b73448596775caff0aaed5a027a081431a2a7caa391d0000001c000000010000001d5636cc95fd07bb220810f7b796fdfea3603b4d31d62bf3c31663862c010164640000000000000000000000000000000001010000010000000000eab0c70ebf053776bee7ee2c628f3119150644af099a7d496dbb0af2410f396016ab1224000000000000002400000000000000010000000000eab0c7230000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232741b0000000000000000eab0c70000001bdf17add00cfd4a9f085bba8b45d040529c2f548b5e4745796445b183000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001640000d1cc06ed1d2a7896cbe552b73448596775caff0aaed5a027a081431a2a7caa391d0000001c000000010000001d5636cc95fd07bb220810f7b796fdfea3603b4d31d62bf3c31663862c00000000000000 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":28,"value_ex":269036,"consumed":1},"cpu_usage":{"last_ordinal":28,"value_ex":108785,"consumed":101},"ram_usage":424170} +DMLOG TRX_OP CREATE onblock 6d982f18ddaa70ae49d7c55358304245a8f07ab8cbced6ca98981545374dfdf5 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232741b0000000000000000eab0c70000001b5674ad8e867097a27b110c428c04166c509c8523db20047cdeca5996000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000 +DMLOG APPLIED_TRANSACTION 29 6d982f18ddaa70ae49d7c55358304245a8f07ab8cbced6ca98981545374dfdf51d0000001c000000010000001dcc67f29852f3fa179424c9555cb1d765bb80924ed2716718059885bc010164640000000000000000000000000000000001010000010000000000eab0c7cf49bbae321602993474ab516845d70a9c17a4c3c77bb5b47cfa75861ccb842224000000000000002400000000000000010000000000eab0c7230000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232741b0000000000000000eab0c70000001b5674ad8e867097a27b110c428c04166c509c8523db20047cdeca59960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000016400006d982f18ddaa70ae49d7c55358304245a8f07ab8cbced6ca98981545374dfdf51d0000001c000000010000001dcc67f29852f3fa179424c9555cb1d765bb80924ed2716718059885bc00000000000000 DMLOG CREATION_OP ROOT 0 DMLOG PERM_OP INS 0 18 {"parent":0,"owner":"kvwriter","name":"owner","last_updated":"2025-01-01T00:00:14.000","auth":{"threshold":1,"keys":[{"key":"SYS5Lbis9dYMfvnZMjui9NnDosq2nTFGaVAawM9pfEAV74xY48Rp6","weight":1}],"accounts":[{"permission":{"actor":"kvwriter","permission":"sysio.code"},"weight":1}]}} DMLOG PERM_OP INS 0 19 {"parent":18,"owner":"kvwriter","name":"active","last_updated":"2025-01-01T00:00:14.000","auth":{"threshold":1,"keys":[{"key":"SYS5PkdKzWJEJGtJd4XZSnABx6kvbNQeuYkxgtZifxyNwEPD4cBhL","weight":1}],"accounts":[{"permission":{"actor":"kvwriter","permission":"sysio.code"},"weight":1}]}} DMLOG RLIMIT_OP ACCOUNT_LIMITS INS {"owner":"kvwriter","net_weight":-1,"cpu_weight":-1,"ram_bytes":-1} DMLOG RLIMIT_OP ACCOUNT_USAGE INS {"owner":"kvwriter","net_usage":{"last_ordinal":0,"value_ex":0,"consumed":0},"cpu_usage":{"last_ordinal":0,"value_ex":0,"consumed":0},"ram_usage":0} DMLOG RAM_OP 0 kvwriter account add newaccount kvwriter 1008 1008 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":28,"value_ex":270027,"consumed":270},"cpu_usage":{"last_ordinal":28,"value_ex":120360,"consumed":2101},"ram_usage":423424} -DMLOG APPLIED_TRANSACTION 29 ab8e296db6c669f757d876333093c1ff395109f79963fab4ee17d3cd6f89d0d91d0000001c000000010000001d5636cc95fd07bb220810f7b796fdfea3603b4d31d62bf3c31663862c0101d00fd00f00000000000000000d0100000000000001010000010000000000eab0c73bf986cb738e78f7952e9039ab8e6143cf16609bf5daee03e09dde81830d733525000000000000002500000000000000010000000000eab0c7240000000000000001010000000000eab0c70000000000eab0c700409e9a2264b89a010000000000eab0c700000000a8ed323288010000000000eab0c7000000576577f986010000000100023b4917b08dc9a01cec41120ace4545fc5f089356edd7b2dcce565203531ecc55010001000000576577f98600804a1401eab0c701000100000001000242722c15ee8ed791df8d66b68fc5f8ce70ed81151d01742a917bd4a459edcd07010001000000576577f98600804a1401eab0c70100000000000000000001d00f018d0200ab8e296db6c669f757d876333093c1ff395109f79963fab4ee17d3cd6f89d0d91d0000001c000000010000001d5636cc95fd07bb220810f7b796fdfea3603b4d31d62bf3c31663862c01000000576577f986f003000000000000000000000000 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":28,"value_ex":270593,"consumed":270},"cpu_usage":{"last_ordinal":28,"value_ex":120360,"consumed":2101},"ram_usage":424170} +DMLOG APPLIED_TRANSACTION 29 90cdc9bfcdafa4663db72c6532e56632ae6c7edfddc05b9c4a1ba64118e645d41d0000001c000000010000001dcc67f29852f3fa179424c9555cb1d765bb80924ed2716718059885bc0101d00fd00f00000000000000000d0100000000000001010000010000000000eab0c73bf986cb738e78f7952e9039ab8e6143cf16609bf5daee03e09dde81830d733525000000000000002500000000000000010000000000eab0c7240000000000000001010000000000eab0c70000000000eab0c700409e9a2264b89a010000000000eab0c700000000a8ed323288010000000000eab0c7000000576577f986010000000100023b4917b08dc9a01cec41120ace4545fc5f089356edd7b2dcce565203531ecc55010001000000576577f98600804a1401eab0c701000100000001000242722c15ee8ed791df8d66b68fc5f8ce70ed81151d01742a917bd4a459edcd07010001000000576577f98600804a1401eab0c70100000000000000000001d00f018d020090cdc9bfcdafa4663db72c6532e56632ae6c7edfddc05b9c4a1ba64118e645d41d0000001c000000010000001dcc67f29852f3fa179424c9555cb1d765bb80924ed2716718059885bc01000000576577f986f003000000000000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG RAM_OP 0 kvwriter code add setcode kvwriter 11088 10080 DMLOG KV_OP INS 0 kvwriter sysio 16298 86f9776557000000 000000576577f986111a874ded1404900c089d3b47a18bd449347f1093b7f6271694b0bf7d8e406c80ffe1ba992a06001d000000 DMLOG RAM_OP 0 sysio:16298:86f9776557000000 table_row add primary_index_add kvwriter 11260 172 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":28,"value_ex":276607,"consumed":1407},"cpu_usage":{"last_ordinal":28,"value_ex":131935,"consumed":4101},"ram_usage":423424} -DMLOG APPLIED_TRANSACTION 29 838bf7fd2faaef74b39add36c31f5aea4a4880c88fd7185e6a579d11daf8db8f1d0000001c000000010000001d5636cc95fd07bb220810f7b796fdfea3603b4d31d62bf3c31663862c0101d00fd00f0000000000000000710400000000000001010000010000000000eab0c7476bc5dcb9e334438fc6a9bca1258c951785a7d252ea616c3759b958169ca3a92600000000000000260000000000000001000000576577f986010000000000000001010000000000eab0c70000000000eab0c700000040258ab2c201000000576577f98600000000a8ed3232ec07000000576577f9860000e0070061736d0100000001660c60027f7f017f60027f7f0060077f7e7f7f7f7f7f017f60037f7f7f017f60067f7e7f7f7f7f017f60087f7e7f7f7f7f7f7f017f60057f7f7f7f7f017f60087f7f7f7f7f7f7f7f017f60017f0060077f7f7f7f7f7f7f017f60047f7f7f7f017f60037e7e7e00028c020f03656e7610726561645f616374696f6e5f64617461000003656e760c737973696f5f617373657274000103656e76066b765f736574000203656e76086b765f6572617365000303656e760c6b765f6964785f73746f7265000403656e760d6b765f6964785f757064617465000503656e760c6b765f6964785f6572617365000603656e76066b765f676574000203656e760c6b765f69745f637265617465000403656e760a6b765f69745f72656164000703656e760d6b765f69745f64657374726f79000803656e760b6b765f6964785f66696e64000403656e760b6b765f6964785f72656164000903656e760e6b765f6964785f64657374726f79000803656e76066d656d636d7000030303020a0b0503010002071202066d656d6f72790200056170706c7900100aa1040216002001200347047f410005200020022003100e450b0b870403027f017e0a7f410041e8fb0310001a4100280200210341042802002104410829030021054110280200210641142802002107412821094118280200210a2009200a6a210b411c280200210c200b200c6a210d4120280200210e20034100460440200420052009200a200b200c2006100221080b2003410146044020042009200a100321080b20034102460440200420052009200a200b200c100421080b20034103460440200420052009200a200b200c200d200e100521080b2003410446044020042009200a200b200c100621080b20034105460440200420052009200a410041808004418080021007210f41022108200f41004e044041808004200f200b200c100f047f41000541e3000b21080b0b2003410646044020042005410041002009200a1008210f200f4100418080044180800241808006418080024180fc034184fc03100921082008450440418080044180fc032802002009200a100f418080064184fc03280200200b200c100f71047f41000541e3000b21080b200f100a0b200341074604402004200541004100200b200c100b210f41022108200f41004e0440200f418080044180800241808006418080024180fc034184fc03100c21082008450440418080044180fc03280200200b200c100f418080064184fc032802002009200a100f71047f41000541e3000b21080b200f100d0b0b200820074641e8fb0310010b0b1d010041e8fb030b15756e6578706563746564206b762073746174757300000000000000000001d00f01f10800838bf7fd2faaef74b39add36c31f5aea4a4880c88fd7185e6a579d11daf8db8f1d0000001c000000010000001d5636cc95fd07bb220810f7b796fdfea3603b4d31d62bf3c31663862c01000000576577f9860c28000000000000000000000000 -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":28,"value_ex":313824767,"consumed":314},"average_block_cpu_usage":{"last_ordinal":28,"value_ex":129527339,"consumed":229},"pending_net_usage":1406,"pending_cpu_usage":4100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1077273,"virtual_cpu_limit":205465} -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":29,"value_ex":322926227,"consumed":1718},"average_block_cpu_usage":{"last_ordinal":29,"value_ex":162614611,"consumed":4229},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1078351,"virtual_cpu_limit":205670} -DMLOG ACCEPTED_BLOCK_V2 0000001d5636cc95fd07bb220810f7b796fdfea3603b4d31d62bf3c31663862c 29 1 1c0000000000000000eab0c70000001c9e94475d52e803613e3523345b5706670537aab0c9708c45134c304b76a4ed9fdd1d20524612ed67d09695f06afc4587b1c0ba9d66fe601f8135f4c50000000000000000000000000000000000000000000000000000000000000000010000000000000001001f36f9f3f80a360593b76c391d91372d83497e6738ae8998ce422d48d967cd972452615f1bd4360c6b5be19cb361256349288b4132d9796e1569bf66613b3927960201d00f010020228ba948d7eb1f63b0a448bdc562236313b17d6c18eb19de4acec766bf6bfe537bd948d6751f8b5531ca0c694c1cfd5ba59265ecafce6f86580b3d761af9edc90000bb01938574671c0052e8036100000000010000000000eab0c700409e9a2264b89a010000000000eab0c700000000a8ed323288010000000000eab0c7000000576577f986010000000100023b4917b08dc9a01cec41120ace4545fc5f089356edd7b2dcce565203531ecc55010001000000576577f98600804a1401eab0c701000100000001000242722c15ee8ed791df8d66b68fc5f8ce70ed81151d01742a917bd4a459edcd07010001000000576577f98600804a1401eab0c701000001d00f01001f69cf84e9fda74eb7f2728c9763174b30b3694ad75307e6d4b9344c976cfced690103c767e230b20c9c757337d6c8d98c2542406c01db72e437c0fb38655659c400009f08938574671c0052e8036100000000010000000000eab0c700000040258ab2c201000000576577f98600000000a8ed3232ec07000000576577f9860000e0070061736d0100000001660c60027f7f017f60027f7f0060077f7e7f7f7f7f7f017f60037f7f7f017f60067f7e7f7f7f7f017f60087f7e7f7f7f7f7f7f017f60057f7f7f7f7f017f60087f7f7f7f7f7f7f7f017f60017f0060077f7f7f7f7f7f7f017f60047f7f7f7f017f60037e7e7e00028c020f03656e7610726561645f616374696f6e5f64617461000003656e760c737973696f5f617373657274000103656e76066b765f736574000203656e76086b765f6572617365000303656e760c6b765f6964785f73746f7265000403656e760d6b765f6964785f757064617465000503656e760c6b765f6964785f6572617365000603656e76066b765f676574000203656e760c6b765f69745f637265617465000403656e760a6b765f69745f72656164000703656e760d6b765f69745f64657374726f79000803656e760b6b765f6964785f66696e64000403656e760b6b765f6964785f72656164000903656e760e6b765f6964785f64657374726f79000803656e76066d656d636d7000030303020a0b0503010002071202066d656d6f72790200056170706c7900100aa1040216002001200347047f410005200020022003100e450b0b870403027f017e0a7f410041e8fb0310001a4100280200210341042802002104410829030021054110280200210641142802002107412821094118280200210a2009200a6a210b411c280200210c200b200c6a210d4120280200210e20034100460440200420052009200a200b200c2006100221080b2003410146044020042009200a100321080b20034102460440200420052009200a200b200c100421080b20034103460440200420052009200a200b200c200d200e100521080b2003410446044020042009200a200b200c100621080b20034105460440200420052009200a410041808004418080021007210f41022108200f41004e044041808004200f200b200c100f047f41000541e3000b21080b0b2003410646044020042005410041002009200a1008210f200f4100418080044180800241808006418080024180fc034184fc03100921082008450440418080044180fc032802002009200a100f418080064184fc03280200200b200c100f71047f41000541e3000b21080b200f100a0b200341074604402004200541004100200b200c100b210f41022108200f41004e0440200f418080044180800241808006418080024180fc034184fc03100c21082008450440418080044180fc03280200200b200c100f418080064184fc032802002009200a100f71047f41000541e3000b21080b200f100d0b0b200820074641e8fb0310010b0b1d010041e8fb030b15756e6578706563746564206b762073746174757300000000 010000000000000001000000d6a531ec124c252e1daa5af1b8af6aa4b3cad69f4b816f4d178a265af2334c855ace2ee1c867855edd138d868f672f489554b35bad3d69fe53e55183cb729fab01000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f5980000000078eadd0f8c3bf1a7ebd74409b8ea73b77484914c091ed807761054b712edb3210001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":28,"value_ex":277173,"consumed":1407},"cpu_usage":{"last_ordinal":28,"value_ex":131935,"consumed":4101},"ram_usage":424170} +DMLOG APPLIED_TRANSACTION 29 cdb8f34eeab350e15125b85e9b6778cb9b9b95ff9fa2bbdddd55abea67f7c7c41d0000001c000000010000001dcc67f29852f3fa179424c9555cb1d765bb80924ed2716718059885bc0101d00fd00f0000000000000000710400000000000001010000010000000000eab0c7476bc5dcb9e334438fc6a9bca1258c951785a7d252ea616c3759b958169ca3a92600000000000000260000000000000001000000576577f986010000000000000001010000000000eab0c70000000000eab0c700000040258ab2c201000000576577f98600000000a8ed3232ec07000000576577f9860000e0070061736d0100000001660c60027f7f017f60027f7f0060077f7e7f7f7f7f7f017f60037f7f7f017f60067f7e7f7f7f7f017f60087f7e7f7f7f7f7f7f017f60057f7f7f7f7f017f60087f7f7f7f7f7f7f7f017f60017f0060077f7f7f7f7f7f7f017f60047f7f7f7f017f60037e7e7e00028c020f03656e7610726561645f616374696f6e5f64617461000003656e760c737973696f5f617373657274000103656e76066b765f736574000203656e76086b765f6572617365000303656e760c6b765f6964785f73746f7265000403656e760d6b765f6964785f757064617465000503656e760c6b765f6964785f6572617365000603656e76066b765f676574000203656e760c6b765f69745f637265617465000403656e760a6b765f69745f72656164000703656e760d6b765f69745f64657374726f79000803656e760b6b765f6964785f66696e64000403656e760b6b765f6964785f72656164000903656e760e6b765f6964785f64657374726f79000803656e76066d656d636d7000030303020a0b0503010002071202066d656d6f72790200056170706c7900100aa1040216002001200347047f410005200020022003100e450b0b870403027f017e0a7f410041e8fb0310001a4100280200210341042802002104410829030021054110280200210641142802002107412821094118280200210a2009200a6a210b411c280200210c200b200c6a210d4120280200210e20034100460440200420052009200a200b200c2006100221080b2003410146044020042009200a100321080b20034102460440200420052009200a200b200c100421080b20034103460440200420052009200a200b200c200d200e100521080b2003410446044020042009200a200b200c100621080b20034105460440200420052009200a410041808004418080021007210f41022108200f41004e044041808004200f200b200c100f047f41000541e3000b21080b0b2003410646044020042005410041002009200a1008210f200f4100418080044180800241808006418080024180fc034184fc03100921082008450440418080044180fc032802002009200a100f418080064184fc03280200200b200c100f71047f41000541e3000b21080b200f100a0b200341074604402004200541004100200b200c100b210f41022108200f41004e0440200f418080044180800241808006418080024180fc034184fc03100c21082008450440418080044180fc03280200200b200c100f418080064184fc032802002009200a100f71047f41000541e3000b21080b200f100d0b0b200820074641e8fb0310010b0b1d010041e8fb030b15756e6578706563746564206b762073746174757300000000000000000001d00f01f10800cdb8f34eeab350e15125b85e9b6778cb9b9b95ff9fa2bbdddd55abea67f7c7c41d0000001c000000010000001dcc67f29852f3fa179424c9555cb1d765bb80924ed2716718059885bc01000000576577f9860c28000000000000000000000000 +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":28,"value_ex":314487267,"consumed":315},"average_block_cpu_usage":{"last_ordinal":28,"value_ex":129527339,"consumed":229},"pending_net_usage":1406,"pending_cpu_usage":4100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1077273,"virtual_cpu_limit":205465} +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":29,"value_ex":323583206,"consumed":1718},"average_block_cpu_usage":{"last_ordinal":29,"value_ex":162614611,"consumed":4229},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1078351,"virtual_cpu_limit":205670} +DMLOG ACCEPTED_BLOCK_V2 0000001dcc67f29852f3fa179424c9555cb1d765bb80924ed2716718059885bc 29 1 1c0000000000000000eab0c70000001cc2ea0a832fb632cefff2f28bfc57b08d63e32a8c940ebea28c2fd5a4c0c4a548f94c8dc49cffd1376c9e76266eb5ec3e844d7c92448b83e9d9f16a3c0000000000000000000000000000000000000000000000000000000000000000010000000000000001001f6f88cc8e0fcefdb0a7da60db8b960ca345673a7fd36d333cab7ac88b77233a1d275aa6536659ea2fa1536831f2b910de3d8e6312e7fe58e27533dfb5dc26ceb80201d00f0100202ac058e11af8d9ebc0fa84312bb869d43936c9aca11cdf76d1c7a56288ff549e44b286d1febfc1f4afb136dff7e4d4606a93379a9e4d9312aa988b720a94609c0000bb01938574671c002fb632ce00000000010000000000eab0c700409e9a2264b89a010000000000eab0c700000000a8ed323288010000000000eab0c7000000576577f986010000000100023b4917b08dc9a01cec41120ace4545fc5f089356edd7b2dcce565203531ecc55010001000000576577f98600804a1401eab0c701000100000001000242722c15ee8ed791df8d66b68fc5f8ce70ed81151d01742a917bd4a459edcd07010001000000576577f98600804a1401eab0c701000001d00f01001ff4e4bd9496c21cdcc06e6ef1e44fa02d48e8ac9f59f5d42abb7f210482726c1533a7c58a40691b4b19666e0d56290d6b19375efcced4813d3089acceb66ce43500009f08938574671c002fb632ce00000000010000000000eab0c700000040258ab2c201000000576577f98600000000a8ed3232ec07000000576577f9860000e0070061736d0100000001660c60027f7f017f60027f7f0060077f7e7f7f7f7f7f017f60037f7f7f017f60067f7e7f7f7f7f017f60087f7e7f7f7f7f7f7f017f60057f7f7f7f7f017f60087f7f7f7f7f7f7f7f017f60017f0060077f7f7f7f7f7f7f017f60047f7f7f7f017f60037e7e7e00028c020f03656e7610726561645f616374696f6e5f64617461000003656e760c737973696f5f617373657274000103656e76066b765f736574000203656e76086b765f6572617365000303656e760c6b765f6964785f73746f7265000403656e760d6b765f6964785f757064617465000503656e760c6b765f6964785f6572617365000603656e76066b765f676574000203656e760c6b765f69745f637265617465000403656e760a6b765f69745f72656164000703656e760d6b765f69745f64657374726f79000803656e760b6b765f6964785f66696e64000403656e760b6b765f6964785f72656164000903656e760e6b765f6964785f64657374726f79000803656e76066d656d636d7000030303020a0b0503010002071202066d656d6f72790200056170706c7900100aa1040216002001200347047f410005200020022003100e450b0b870403027f017e0a7f410041e8fb0310001a4100280200210341042802002104410829030021054110280200210641142802002107412821094118280200210a2009200a6a210b411c280200210c200b200c6a210d4120280200210e20034100460440200420052009200a200b200c2006100221080b2003410146044020042009200a100321080b20034102460440200420052009200a200b200c100421080b20034103460440200420052009200a200b200c200d200e100521080b2003410446044020042009200a200b200c100621080b20034105460440200420052009200a410041808004418080021007210f41022108200f41004e044041808004200f200b200c100f047f41000541e3000b21080b0b2003410646044020042005410041002009200a1008210f200f4100418080044180800241808006418080024180fc034184fc03100921082008450440418080044180fc032802002009200a100f418080064184fc03280200200b200c100f71047f41000541e3000b21080b200f100a0b200341074604402004200541004100200b200c100b210f41022108200f41004e0440200f418080044180800241808006418080024180fc034184fc03100c21082008450440418080044180fc03280200200b200c100f418080064184fc032802002009200a100f71047f41000541e3000b21080b200f100d0b0b200820074641e8fb0310010b0b1d010041e8fb030b15756e6578706563746564206b762073746174757300000000 01000000000000000100000048a401942801612aa2ee3b89417f99f476c7bcc5b4b30719104717bcd4440648b47d7dd57631efd1fd47da5c80a40f19fd20ab23a5dc058a46944a746ca1ebdb01000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f59800000000321adbe299269b51e57bbe54ee053d1761ae3624987a910d417ac271f9d8fc000001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 DMLOG START_BLOCK 30 DMLOG CREATION_OP ROOT 0 -DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":29,"value_ex":276605,"consumed":1},"cpu_usage":{"last_ordinal":29,"value_ex":132513,"consumed":101},"ram_usage":423424} -DMLOG TRX_OP CREATE onblock 2119b26f4702ffa4fac31f7399a2227516862dad5d0ab2f48387e67698a931d2 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232741c0000000000000000eab0c70000001c9e94475d52e803613e3523345b5706670537aab0c9708c45134c304b76a4ed9fdd1d20524612ed67d09695f06afc4587b1c0ba9d66fe601f8135f4c500000000000000000000000000000000000000000000000000000000000000000100000000000000000000 -DMLOG APPLIED_TRANSACTION 30 2119b26f4702ffa4fac31f7399a2227516862dad5d0ab2f48387e67698a931d21e0000001d000000010000001e9bf5852e83aeaec33ddb2e2e4be33423a727c3eaeb7ef1c7b7b2cc6d010164640000000000000000000000000000000001010000010000000000eab0c774da07560999d7fb549e9f10967e74064cdf2b92430662c8e67d6880cddb083a27000000000000002700000000000000010000000000eab0c7250000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232741c0000000000000000eab0c70000001c9e94475d52e803613e3523345b5706670537aab0c9708c45134c304b76a4ed9fdd1d20524612ed67d09695f06afc4587b1c0ba9d66fe601f8135f4c5000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000016400002119b26f4702ffa4fac31f7399a2227516862dad5d0ab2f48387e67698a931d21e0000001d000000010000001e9bf5852e83aeaec33ddb2e2e4be33423a727c3eaeb7ef1c7b7b2cc6d00000000000000 +DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"sysio","net_usage":{"last_ordinal":29,"value_ex":277171,"consumed":1},"cpu_usage":{"last_ordinal":29,"value_ex":132513,"consumed":101},"ram_usage":424170} +DMLOG TRX_OP CREATE onblock d0ae65eeae9ec4fb448bde2a282a4066d24204ab3cfdbb691fd65a24cd4dfdf6 0000000000000000000000000000010000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232741c0000000000000000eab0c70000001cc2ea0a832fb632cefff2f28bfc57b08d63e32a8c940ebea28c2fd5a4c0c4a548f94c8dc49cffd1376c9e76266eb5ec3e844d7c92448b83e9d9f16a3c00000000000000000000000000000000000000000000000000000000000000000100000000000000000000 +DMLOG APPLIED_TRANSACTION 30 d0ae65eeae9ec4fb448bde2a282a4066d24204ab3cfdbb691fd65a24cd4dfdf61e0000001d000000010000001e7fb7b0e1d266ed43ad3f1a958425bbacebca6edbe82fc37b9d1bd2e5010164640000000000000000000000000000000001010000010000000000eab0c7599772159faf8644f7404cd4741bd87964a26d6139707dc524847fe16d7b489a27000000000000002700000000000000010000000000eab0c7250000000000000001010000000000eab0c70000000000eab0c700000000221acfa4010000000000eab0c700000000a8ed3232741c0000000000000000eab0c70000001cc2ea0a832fb632cefff2f28bfc57b08d63e32a8c940ebea28c2fd5a4c0c4a548f94c8dc49cffd1376c9e76266eb5ec3e844d7c92448b83e9d9f16a3c00000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001640000d0ae65eeae9ec4fb448bde2a282a4066d24204ab3cfdbb691fd65a24cd4dfdf61e0000001d000000010000001e7fb7b0e1d266ed43ad3f1a958425bbacebca6edbe82fc37b9d1bd2e500000000000000 DMLOG CREATION_OP ROOT 0 DMLOG KV_OP INS 0 kvwriter kvwriter 7 726f77 7631 DMLOG RAM_OP 0 kvwriter:7:726f77 table_row add primary_index_add kvwriter 11377 117 @@ -350,7 +350,7 @@ DMLOG KV_IDX_OP REM 11 alice kvwriter 7 706b 73337333 DMLOG RAM_OP 11 kvwriter:7:706b:73337333 secondary_index remove secondary_index_remove alice 1264 -118 DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"alice","net_usage":{"last_ordinal":29,"value_ex":1488,"consumed":257},"cpu_usage":{"last_ordinal":29,"value_ex":1922,"consumed":332},"ram_usage":1264} DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"kvwriter","net_usage":{"last_ordinal":29,"value_ex":5400,"consumed":933},"cpu_usage":{"last_ordinal":29,"value_ex":9607,"consumed":1660},"ram_usage":11260} -DMLOG APPLIED_TRANSACTION 30 9449e439629da833eb92e4a9534d73ef86809fced374551763693ca56558a7b41e0000001d000000010000001e9bf5852e83aeaec33ddb2e2e4be33423a727c3eaeb7ef1c7b7b2cc6d010ca601a601a601a601a601a601a601a601a601a601a601a601c80f0000000000000000a6040000000000000c01000001000000576577f986127f1b6dc264ed657e5eec112927d4760aa57e57dca4c985733e189f4f5b42a32800000000000000010000000000000001000000576577f98602000000000000000100000000576577f986000000576577f986000000000095dde501000000576577f98600000000a8ed32322d0000000007000000000000576577f986010000000000000003000000020000000000000000000000726f777631000000000000000001a601015d009449e439629da833eb92e4a9534d73ef86809fced374551763693ca56558a7b41e0000001d000000010000001e9bf5852e83aeaec33ddb2e2e4be33423a727c3eaeb7ef1c7b7b2cc6d01000000576577f986750000000000000000000002000001000000576577f986421195428fd6e2eff67b33529aa1d883500e5110a0ad1a87e6fb2912e6c3ac742900000000000000020000000000000001000000576577f98603000000000000000100000000576577f986000000576577f986000000000095dde501000000576577f98600000000a8ed32322d0000000007000000000000576577f986010000000300000003000000020000000000000000000000726f777639000000000000000001a601015d009449e439629da833eb92e4a9534d73ef86809fced374551763693ca56558a7b41e0000001d000000010000001e9bf5852e83aeaec33ddb2e2e4be33423a727c3eaeb7ef1c7b7b2cc6d0000000003000001000000576577f98600a1ada6cce60ebd6af360d042c0e3a4e455eeb7e3ed44a154501f070e0825342a00000000000000030000000000000001000000576577f98604000000000000000100000000576577f986000000576577f986000000000095dde501000000576577f98600000000a8ed32322d0000000007000000000000576577f986020000000000000003000000020000000000000000000000726f777632000000000000000001a601015d009449e439629da833eb92e4a9534d73ef86809fced374551763693ca56558a7b41e0000001d000000010000001e9bf5852e83aeaec33ddb2e2e4be33423a727c3eaeb7ef1c7b7b2cc6d0000000004000001000000576577f98697b19ed560491a7986e81191426f07a7eb5e31663dbac476d01dc02bfb517eb82b00000000000000040000000000000001000000576577f98605000000000000000100000000576577f986000000576577f986000000000095dde501000000576577f98600000000a8ed32322f0000000007000000000000576577f986020000000000000003000000040000000000000000000000726f7776337633000000000000000001a601015f009449e439629da833eb92e4a9534d73ef86809fced374551763693ca56558a7b41e0000001d000000010000001e9bf5852e83aeaec33ddb2e2e4be33423a727c3eaeb7ef1c7b7b2cc6d01000000576577f986020000000000000000000005000001000000576577f9867ca3b203c195caf62d50b6462587a91475ba2fb087186888a3a30c09aeaac2372c000000000000000500000000000000020000000000855c340300000000000000000000576577f98606000000000000000100000000576577f986000000576577f986000000000095dde5030000000000855c3400aef2a602eab0c70000000000855c3400000000a8ed3232000000576577f98600000000a8ed32322f00000000070000000000000000855c34020000000000000003000000040000000000000000000000726f7776337633000000000000000001a601017f009449e439629da833eb92e4a9534d73ef86809fced374551763693ca56558a7b41e0000001d000000010000001e9bf5852e83aeaec33ddb2e2e4be33423a727c3eaeb7ef1c7b7b2cc6d020000000000855c347700000000000000000000576577f98689ffffffffffffff00000006000001000000576577f986f6ee9a066d94dcbe024bd71f2f3db4821c2f907edfa67b2596de54fc5b55f6532d00000000000000060000000000000001000000576577f98607000000000000000100000000576577f986000000576577f986000000000095dde501000000576577f98600000000a8ed32322b01000000070000000000000000000000000000000000000003000000000000000000000000000000726f77000000000000000001a601015b009449e439629da833eb92e4a9534d73ef86809fced374551763693ca56558a7b41e0000001d000000010000001e9bf5852e83aeaec33ddb2e2e4be33423a727c3eaeb7ef1c7b7b2cc6d010000000000855c3489ffffffffffffff00000007000001000000576577f98691cd70be2923158ca0ba66a08a04c39dc6374523e937881a16a4a54135d11b6d2e00000000000000070000000000000001000000576577f98608000000000000000100000000576577f986000000576577f986000000000095dde501000000576577f98600000000a8ed32322c0200000007000000000000576577f986000000000000000002000000020000000000000000000000706b7331000000000000000001a601015c009449e439629da833eb92e4a9534d73ef86809fced374551763693ca56558a7b41e0000001d000000010000001e9bf5852e83aeaec33ddb2e2e4be33423a727c3eaeb7ef1c7b7b2cc6d01000000576577f986740000000000000000000008000001000000576577f9866f54d5e57a741cf4aace0b90ff6088a470f8873d12b93cfb74bf36bef90a5a9f2f00000000000000080000000000000001000000576577f98609000000000000000100000000576577f986000000576577f986000000000095dde501000000576577f98600000000a8ed32322c0200000007000000000000576577f986000000000300000002000000020000000000000000000000706b7331000000000000000001a601015c009449e439629da833eb92e4a9534d73ef86809fced374551763693ca56558a7b41e0000001d000000010000001e9bf5852e83aeaec33ddb2e2e4be33423a727c3eaeb7ef1c7b7b2cc6d0000000009000001000000576577f986381b4ef623cc4c855524663ddb81dcff299c76619508b43e9fda771074607e993000000000000000090000000000000001000000576577f9860a000000000000000100000000576577f986000000576577f986000000000095dde501000000576577f98600000000a8ed32322e0300000007000000000000576577f986000000000000000002000000020000000200000000000000706b73317332000000000000000001a601015e009449e439629da833eb92e4a9534d73ef86809fced374551763693ca56558a7b41e0000001d000000010000001e9bf5852e83aeaec33ddb2e2e4be33423a727c3eaeb7ef1c7b7b2cc6d000000000a000001000000576577f986b85c15cdf033ae58b2fd89ade90716c4a80fffa5664d325dcf6e5f99a99f011e31000000000000000a0000000000000001000000576577f9860b000000000000000100000000576577f986000000576577f986000000000095dde501000000576577f98600000000a8ed3232300300000007000000000000576577f986000000000000000002000000020000000400000000000000706b733273337333000000000000000001a6010160009449e439629da833eb92e4a9534d73ef86809fced374551763693ca56558a7b41e0000001d000000010000001e9bf5852e83aeaec33ddb2e2e4be33423a727c3eaeb7ef1c7b7b2cc6d01000000576577f98602000000000000000000000b000001000000576577f9863c08a0b0b5702fcdbcddfc37fdc98568b79e6c5856264d9f2d54b209644cc9f032000000000000000b00000000000000020000000000855c340500000000000000000000576577f9860c000000000000000100000000576577f986000000576577f986000000000095dde5030000000000855c3400aef2a602eab0c70000000000855c3400000000a8ed3232000000576577f98600000000a8ed32323203000000070000000000000000855c34000000000000000002000000040000000400000000000000706b7333733373337333000000000000000001a601018201009449e439629da833eb92e4a9534d73ef86809fced374551763693ca56558a7b41e0000001d000000010000001e9bf5852e83aeaec33ddb2e2e4be33423a727c3eaeb7ef1c7b7b2cc6d020000000000855c347600000000000000000000576577f9868affffffffffffff0000000c000001000000576577f9864d028ddd45f8d60cef2380d61f3d19ac5e8dad6acf91c5a3ad2e37c970800c6733000000000000000c0000000000000001000000576577f9860d000000000000000100000000576577f986000000576577f986000000000095dde501000000576577f98600000000a8ed32322e04000000070000000000000000000000000000000000000002000000040000000000000000000000706b73337333000000000000000001a601015e009449e439629da833eb92e4a9534d73ef86809fced374551763693ca56558a7b41e0000001d000000010000001e9bf5852e83aeaec33ddb2e2e4be33423a727c3eaeb7ef1c7b7b2cc6d010000000000855c348affffffffffffff000000000000 -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":29,"value_ex":322926227,"consumed":1718},"average_block_cpu_usage":{"last_ordinal":29,"value_ex":162614611,"consumed":4229},"pending_net_usage":1190,"pending_cpu_usage":2092,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1078351,"virtual_cpu_limit":205670} -DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":30,"value_ex":330151842,"consumed":1511},"average_block_cpu_usage":{"last_ordinal":30,"value_ex":178692823,"consumed":2254},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1079430,"virtual_cpu_limit":205875} -DMLOG ACCEPTED_BLOCK_V2 0000001e9bf5852e83aeaec33ddb2e2e4be33423a727c3eaeb7ef1c7b7b2cc6d 30 1 1d0000000000000000eab0c70000001d5636cc95fd07bb220810f7b796fdfea3603b4d31d62bf3c31663862c1fdeb299f9a5c928239a40de20f0ad91b404f0584ff69d09a0db324d75d143860000000000000000000000000000000000000000000000000000000000000000010000000000000001001f9dccba6452eaf9e7d577eeb39a2d2d70facd64a580b0ee7cdd67b321b116dc2f2834911a984a445ee05647fb2f32cf22dec5e0ef55b248530b2f2fa13d6c1ec1010ca601a601a601a601a601a601a601a601a601a601a601a60102002071f784a353dadce3e931a5ebe26946f7a0599591023ded306e07a9446ad6a95333f81b948542deb5d713aecda78767de9c78784a43e72c8c71421adfb1d394b60020ec41850dc96094eb9f1eb209fa1ad394470a6e99bbaaf77f01a403ceeee9db7a23549ec4a2aa53b11b9da115b68cb7872948b8e1640c3b039557d522aeff503600008e08948574671d00fd07bb22000000000c000000576577f986000000000095dde501000000576577f98600000000a8ed32322d0000000007000000000000576577f986010000000000000003000000020000000000000000000000726f777631000000576577f986000000000095dde501000000576577f98600000000a8ed32322d0000000007000000000000576577f986010000000300000003000000020000000000000000000000726f777639000000576577f986000000000095dde501000000576577f98600000000a8ed32322d0000000007000000000000576577f986020000000000000003000000020000000000000000000000726f777632000000576577f986000000000095dde501000000576577f98600000000a8ed32322f0000000007000000000000576577f986020000000000000003000000040000000000000000000000726f7776337633000000576577f986000000000095dde5030000000000855c3400aef2a602eab0c70000000000855c3400000000a8ed3232000000576577f98600000000a8ed32322f00000000070000000000000000855c34020000000000000003000000040000000000000000000000726f7776337633000000576577f986000000000095dde501000000576577f98600000000a8ed32322b01000000070000000000000000000000000000000000000003000000000000000000000000000000726f77000000576577f986000000000095dde501000000576577f98600000000a8ed32322c0200000007000000000000576577f986000000000000000002000000020000000000000000000000706b7331000000576577f986000000000095dde501000000576577f98600000000a8ed32322c0200000007000000000000576577f986000000000300000002000000020000000000000000000000706b7331000000576577f986000000000095dde501000000576577f98600000000a8ed32322e0300000007000000000000576577f986000000000000000002000000020000000200000000000000706b73317332000000576577f986000000000095dde501000000576577f98600000000a8ed3232300300000007000000000000576577f986000000000000000002000000020000000400000000000000706b733273337333000000576577f986000000000095dde5030000000000855c3400aef2a602eab0c70000000000855c3400000000a8ed3232000000576577f98600000000a8ed32323203000000070000000000000000855c34000000000000000002000000040000000400000000000000706b7333733373337333000000576577f986000000000095dde501000000576577f98600000000a8ed32322e04000000070000000000000000000000000000000000000002000000040000000000000000000000706b73337333000000 010000000000000001000000761a3e720b88aaf61683574ebc9cf843ae8e6da59485756fa4169f65ee08ab69f8d58f7aa93b005922efb8b191df6318a6410e3c02beb5ecc78d9c47750b73e501000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f5980000000017c43a0c4d997aaacac61bceaeb496a7a28275c18a5f78a442a0746bf8c13a570001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 +DMLOG APPLIED_TRANSACTION 30 5fdfcffd4415f16865333f9c6e4c4e726c83930876112ace0dab7404387cda731e0000001d000000010000001e7fb7b0e1d266ed43ad3f1a958425bbacebca6edbe82fc37b9d1bd2e5010ca601a601a601a601a601a601a601a601a601a601a601a601c80f0000000000000000a6040000000000000c01000001000000576577f986127f1b6dc264ed657e5eec112927d4760aa57e57dca4c985733e189f4f5b42a32800000000000000010000000000000001000000576577f98602000000000000000100000000576577f986000000576577f986000000000095dde501000000576577f98600000000a8ed32322d0000000007000000000000576577f986010000000000000003000000020000000000000000000000726f777631000000000000000001a601015d005fdfcffd4415f16865333f9c6e4c4e726c83930876112ace0dab7404387cda731e0000001d000000010000001e7fb7b0e1d266ed43ad3f1a958425bbacebca6edbe82fc37b9d1bd2e501000000576577f986750000000000000000000002000001000000576577f986421195428fd6e2eff67b33529aa1d883500e5110a0ad1a87e6fb2912e6c3ac742900000000000000020000000000000001000000576577f98603000000000000000100000000576577f986000000576577f986000000000095dde501000000576577f98600000000a8ed32322d0000000007000000000000576577f986010000000300000003000000020000000000000000000000726f777639000000000000000001a601015d005fdfcffd4415f16865333f9c6e4c4e726c83930876112ace0dab7404387cda731e0000001d000000010000001e7fb7b0e1d266ed43ad3f1a958425bbacebca6edbe82fc37b9d1bd2e50000000003000001000000576577f98600a1ada6cce60ebd6af360d042c0e3a4e455eeb7e3ed44a154501f070e0825342a00000000000000030000000000000001000000576577f98604000000000000000100000000576577f986000000576577f986000000000095dde501000000576577f98600000000a8ed32322d0000000007000000000000576577f986020000000000000003000000020000000000000000000000726f777632000000000000000001a601015d005fdfcffd4415f16865333f9c6e4c4e726c83930876112ace0dab7404387cda731e0000001d000000010000001e7fb7b0e1d266ed43ad3f1a958425bbacebca6edbe82fc37b9d1bd2e50000000004000001000000576577f98697b19ed560491a7986e81191426f07a7eb5e31663dbac476d01dc02bfb517eb82b00000000000000040000000000000001000000576577f98605000000000000000100000000576577f986000000576577f986000000000095dde501000000576577f98600000000a8ed32322f0000000007000000000000576577f986020000000000000003000000040000000000000000000000726f7776337633000000000000000001a601015f005fdfcffd4415f16865333f9c6e4c4e726c83930876112ace0dab7404387cda731e0000001d000000010000001e7fb7b0e1d266ed43ad3f1a958425bbacebca6edbe82fc37b9d1bd2e501000000576577f986020000000000000000000005000001000000576577f9867ca3b203c195caf62d50b6462587a91475ba2fb087186888a3a30c09aeaac2372c000000000000000500000000000000020000000000855c340300000000000000000000576577f98606000000000000000100000000576577f986000000576577f986000000000095dde5030000000000855c3400aef2a602eab0c70000000000855c3400000000a8ed3232000000576577f98600000000a8ed32322f00000000070000000000000000855c34020000000000000003000000040000000000000000000000726f7776337633000000000000000001a601017f005fdfcffd4415f16865333f9c6e4c4e726c83930876112ace0dab7404387cda731e0000001d000000010000001e7fb7b0e1d266ed43ad3f1a958425bbacebca6edbe82fc37b9d1bd2e5020000000000855c347700000000000000000000576577f98689ffffffffffffff00000006000001000000576577f986f6ee9a066d94dcbe024bd71f2f3db4821c2f907edfa67b2596de54fc5b55f6532d00000000000000060000000000000001000000576577f98607000000000000000100000000576577f986000000576577f986000000000095dde501000000576577f98600000000a8ed32322b01000000070000000000000000000000000000000000000003000000000000000000000000000000726f77000000000000000001a601015b005fdfcffd4415f16865333f9c6e4c4e726c83930876112ace0dab7404387cda731e0000001d000000010000001e7fb7b0e1d266ed43ad3f1a958425bbacebca6edbe82fc37b9d1bd2e5010000000000855c3489ffffffffffffff00000007000001000000576577f98691cd70be2923158ca0ba66a08a04c39dc6374523e937881a16a4a54135d11b6d2e00000000000000070000000000000001000000576577f98608000000000000000100000000576577f986000000576577f986000000000095dde501000000576577f98600000000a8ed32322c0200000007000000000000576577f986000000000000000002000000020000000000000000000000706b7331000000000000000001a601015c005fdfcffd4415f16865333f9c6e4c4e726c83930876112ace0dab7404387cda731e0000001d000000010000001e7fb7b0e1d266ed43ad3f1a958425bbacebca6edbe82fc37b9d1bd2e501000000576577f986740000000000000000000008000001000000576577f9866f54d5e57a741cf4aace0b90ff6088a470f8873d12b93cfb74bf36bef90a5a9f2f00000000000000080000000000000001000000576577f98609000000000000000100000000576577f986000000576577f986000000000095dde501000000576577f98600000000a8ed32322c0200000007000000000000576577f986000000000300000002000000020000000000000000000000706b7331000000000000000001a601015c005fdfcffd4415f16865333f9c6e4c4e726c83930876112ace0dab7404387cda731e0000001d000000010000001e7fb7b0e1d266ed43ad3f1a958425bbacebca6edbe82fc37b9d1bd2e50000000009000001000000576577f986381b4ef623cc4c855524663ddb81dcff299c76619508b43e9fda771074607e993000000000000000090000000000000001000000576577f9860a000000000000000100000000576577f986000000576577f986000000000095dde501000000576577f98600000000a8ed32322e0300000007000000000000576577f986000000000000000002000000020000000200000000000000706b73317332000000000000000001a601015e005fdfcffd4415f16865333f9c6e4c4e726c83930876112ace0dab7404387cda731e0000001d000000010000001e7fb7b0e1d266ed43ad3f1a958425bbacebca6edbe82fc37b9d1bd2e5000000000a000001000000576577f986b85c15cdf033ae58b2fd89ade90716c4a80fffa5664d325dcf6e5f99a99f011e31000000000000000a0000000000000001000000576577f9860b000000000000000100000000576577f986000000576577f986000000000095dde501000000576577f98600000000a8ed3232300300000007000000000000576577f986000000000000000002000000020000000400000000000000706b733273337333000000000000000001a6010160005fdfcffd4415f16865333f9c6e4c4e726c83930876112ace0dab7404387cda731e0000001d000000010000001e7fb7b0e1d266ed43ad3f1a958425bbacebca6edbe82fc37b9d1bd2e501000000576577f98602000000000000000000000b000001000000576577f9863c08a0b0b5702fcdbcddfc37fdc98568b79e6c5856264d9f2d54b209644cc9f032000000000000000b00000000000000020000000000855c340500000000000000000000576577f9860c000000000000000100000000576577f986000000576577f986000000000095dde5030000000000855c3400aef2a602eab0c70000000000855c3400000000a8ed3232000000576577f98600000000a8ed32323203000000070000000000000000855c34000000000000000002000000040000000400000000000000706b7333733373337333000000000000000001a601018201005fdfcffd4415f16865333f9c6e4c4e726c83930876112ace0dab7404387cda731e0000001d000000010000001e7fb7b0e1d266ed43ad3f1a958425bbacebca6edbe82fc37b9d1bd2e5020000000000855c347600000000000000000000576577f9868affffffffffffff0000000c000001000000576577f9864d028ddd45f8d60cef2380d61f3d19ac5e8dad6acf91c5a3ad2e37c970800c6733000000000000000c0000000000000001000000576577f9860d000000000000000100000000576577f986000000576577f986000000000095dde501000000576577f98600000000a8ed32322e04000000070000000000000000000000000000000000000002000000040000000000000000000000706b73337333000000000000000001a601015e005fdfcffd4415f16865333f9c6e4c4e726c83930876112ace0dab7404387cda731e0000001d000000010000001e7fb7b0e1d266ed43ad3f1a958425bbacebca6edbe82fc37b9d1bd2e5010000000000855c348affffffffffffff000000000000 +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":29,"value_ex":323583206,"consumed":1718},"average_block_cpu_usage":{"last_ordinal":29,"value_ex":162614611,"consumed":4229},"pending_net_usage":1190,"pending_cpu_usage":2092,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1078351,"virtual_cpu_limit":205670} +DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":30,"value_ex":330803346,"consumed":1511},"average_block_cpu_usage":{"last_ordinal":30,"value_ex":178692823,"consumed":2254},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1079430,"virtual_cpu_limit":205875} +DMLOG ACCEPTED_BLOCK_V2 0000001e7fb7b0e1d266ed43ad3f1a958425bbacebca6edbe82fc37b9d1bd2e5 30 1 1d0000000000000000eab0c70000001dcc67f29852f3fa179424c9555cb1d765bb80924ed2716718059885bc87ab17f6e59833b5ad64e9784658f2cc858304a253f5a6dbca11dddc2969adde000000000000000000000000000000000000000000000000000000000000000001000000000000000100205a0065bb157f67aee842529eb645c8bce6d742de88eb9f64bb0d8be421d390c0675b4d6831f8577a946fa0e9f14979be2a0a905710adf5b050e63e6172a2eccd010ca601a601a601a601a601a601a601a601a601a601a601a60102002086bd9591cf698fe383e451b212d216a27e38c1993c866c4d9d1c6ca02e95c74b2818d573823447c8ee253fe8e104e2ebeff579d0c843a1d2e38dbb3c573fb1b10020e40297afd7406dccc44ec4e557e9003ed15b10f14ca9c0ee7a9151b5b862ed417bb2dc8822d679fb6f4417695ba27ebec4a0c2ee7112582d3c806dcb42235c4200008e08948574671d0052f3fa17000000000c000000576577f986000000000095dde501000000576577f98600000000a8ed32322d0000000007000000000000576577f986010000000000000003000000020000000000000000000000726f777631000000576577f986000000000095dde501000000576577f98600000000a8ed32322d0000000007000000000000576577f986010000000300000003000000020000000000000000000000726f777639000000576577f986000000000095dde501000000576577f98600000000a8ed32322d0000000007000000000000576577f986020000000000000003000000020000000000000000000000726f777632000000576577f986000000000095dde501000000576577f98600000000a8ed32322f0000000007000000000000576577f986020000000000000003000000040000000000000000000000726f7776337633000000576577f986000000000095dde5030000000000855c3400aef2a602eab0c70000000000855c3400000000a8ed3232000000576577f98600000000a8ed32322f00000000070000000000000000855c34020000000000000003000000040000000000000000000000726f7776337633000000576577f986000000000095dde501000000576577f98600000000a8ed32322b01000000070000000000000000000000000000000000000003000000000000000000000000000000726f77000000576577f986000000000095dde501000000576577f98600000000a8ed32322c0200000007000000000000576577f986000000000000000002000000020000000000000000000000706b7331000000576577f986000000000095dde501000000576577f98600000000a8ed32322c0200000007000000000000576577f986000000000300000002000000020000000000000000000000706b7331000000576577f986000000000095dde501000000576577f98600000000a8ed32322e0300000007000000000000576577f986000000000000000002000000020000000200000000000000706b73317332000000576577f986000000000095dde501000000576577f98600000000a8ed3232300300000007000000000000576577f986000000000000000002000000020000000400000000000000706b733273337333000000576577f986000000000095dde5030000000000855c3400aef2a602eab0c70000000000855c3400000000a8ed3232000000576577f98600000000a8ed32323203000000070000000000000000855c34000000000000000002000000040000000400000000000000706b7333733373337333000000576577f986000000000095dde501000000576577f98600000000a8ed32322e04000000070000000000000000000000000000000000000002000000040000000000000000000000706b73337333000000 0100000000000000010000009f6408c57ef13600550f0039b53ce77e67f8071c0f939816914efe8322fbdc2a1b15704e7bcd81ba5243f7bac61d2ba60e70ba6c0be922f172d7480e4aca10c001000000d4bdb6ac50af1cc093373e2aedeb034c70f95c59525a31c4b95673ef8260f598000000005522f8dd236e563d7ae98761f4b2ffe927716d97592113bdec3fb0e6492c25250001000000 0000000000000000010000000000eab0c7000100000001000222a1d69589d2f1d748f1158ff870a459bc61de89c612b8fac360b1d91ecbcfed0100 0100000001000000000000000105737973696f01000000000000008e015055425f424c535f69346850716c6b6f434a6167584c426972697064543046336437365a656f494b57555f453249414f2d426648796e6d4377424a4f7137546b7a417272592d3841714f6c6242464970714961384d71794f76355671735a6b4d6d5f6c7643714e6c73765362414842537276567652386f4a437a514f52765a356d466a585f6d6753653834543477 diff --git a/unittests/params_tests.cpp b/unittests/params_tests.cpp index 87b15ecb7f..e44d4e9c10 100644 --- a/unittests/params_tests.cpp +++ b/unittests/params_tests.cpp @@ -62,6 +62,8 @@ BOOST_FIXTURE_TEST_CASE(throw_test, params_tester){ fc_exception_message_contains("max KV key size must be between") ); BOOST_CHECK_EXCEPTION( [&]{action("setthrow5"_n, mvo());}(), chain::action_validate_exception, fc_exception_message_contains("max KV secondary key size must be between") ); + BOOST_CHECK_EXCEPTION( [&]{action("throwstipend"_n, mvo());}(), chain::action_validate_exception, + fc_exception_message_contains("notify cpu stipend cannot exceed max transaction cpu usage") ); BOOST_CHECK_THROW( [&]{action("getthrow1"_n, mvo());}(), chain::config_parse_error); BOOST_CHECK_THROW( [&]{action("getthrow2"_n, mvo());}(), fc::out_of_range_exception); BOOST_CHECK_THROW( [&]{action("getthrow3"_n, mvo());}(), chain::config_parse_error); diff --git a/unittests/receiver_cpu_billing_tests.cpp b/unittests/receiver_cpu_billing_tests.cpp index 271c6b339e..fdc35b7e09 100644 --- a/unittests/receiver_cpu_billing_tests.cpp +++ b/unittests/receiver_cpu_billing_tests.cpp @@ -11,7 +11,9 @@ #include #include +#include #include +#include using namespace sysio; using namespace sysio::chain; @@ -31,15 +33,33 @@ constexpr account_name game = "game"_n; ///< contracts runnin constexpr account_name winner = "winner"_n; constexpr account_name relay = "relay"_n; constexpr account_name idle = "idle"_n; ///< contract given no CPU +constexpr account_name cold = "coldload"_n; ///< runs a large module once, in one test constexpr action_name setalimits = "setalimits"_n; ///< sysio.bios: sets an account's resource limits +constexpr action_name setparams = "setparams"_n; ///< sysio.bios: sets the chain parameters constexpr const char* max_supply = "1000000.0000 TKN"; constexpr const char* issued = "2000.0000 TKN"; constexpr const char* funding = "1000.0000 TKN"; ///< what the game starts with constexpr const char* amount = "1.0000 TKN"; +constexpr const char* bob_funding = "100.0000 TKN"; ///< what bob sends from in the many-notifications test +const symbol token_symbol{ 4, "TKN" }; constexpr const char* spin_memo = "spin:20000"; constexpr uint32_t spin_count = 20000; constexpr int64_t cpu_weight = 10'000'000'000; ///< ample CPU for the accounts that run or pay for code + +// A handler either stays inside the stipend or is measured to run well past it. +/// The notify_cpu_stipend the fixture sets: well above a no-op handler on every runtime, so that a frame inside or +/// past it does not depend on the host's speed. +constexpr int64_t stipend_us = 1000; +constexpr int64_t long_frame_us = 4 * stipend_us; ///< long_spins() keeps a frame busy at least this long +constexpr uint32_t first_long_spins = 1000; +constexpr uint32_t max_spin_doublings = 21; ///< first_long_spins doubled this often still fits in uint32_t +constexpr uint32_t calibration_runs = 3; ///< runs of each loop count long_spins() measures +constexpr uint32_t short_spin_count = 10; +constexpr uint32_t many_notifications = 50; +constexpr const char* spin_command = "spin:"; ///< cpu_receiver_test memo: loop n times +constexpr const char* spinsend_command = "spinsend:"; ///< loop n times and send itself an inline spin of n + constexpr uint32_t proposal_expiration_sec = 3600; constexpr uint32_t high_min_trx_cpu_us = 20'000; constexpr uint8_t small_max_cpu_usage_ms = 5; @@ -47,6 +67,8 @@ constexpr const char* receipt_has_extra_entry = "is more than the expected"; constexpr const char* receipt_mismatch = "receipt does not match"; constexpr const char* account_cpu_limit_reached = "reached account cpu limit"; constexpr const char* idle_over_its_limit = "billable CPU time for the account idle"; +constexpr const char* relay_over_its_limit = "billable CPU time for the account relay"; +constexpr const char* stipend_over_trx_limit = "notify cpu stipend cannot exceed max transaction cpu usage"; constexpr const char* idle_over_greylisted_limit = "greylisted billable CPU time for the account idle"; constexpr const char* greylisted_frame_stopped = "greylisted transaction"; constexpr const char* trx_max_cpu_reached = "reached trx specified max_cpu_usage_ms"; @@ -64,7 +86,14 @@ uint64_t total( const std::vector& entries ) { return std::accumulate( entries.begin(), entries.end(), uint64_t{ 0 } ); } -/// Contracts reached through system contracts pay CPU for their own code; see transaction_context::begin_frame. +/// The most a notified contract's entry can hold for frames that ran `elapsed_us` in all: the stipend covers the rest. +/// A frame's CPU is within its elapsed time, so a frame inside the stipend leaves an entry of 0. +uint32_t most_past_stipend( int64_t elapsed_us, int64_t stipend = stipend_us ) { + return static_cast( std::max( elapsed_us - stipend, 0 ) ); +} + +/// Contracts reached through system contracts pay CPU for their own code past the stipend of a notification; see +/// transaction_context::begin_frame. struct receiver_cpu_tester : validating_tester { receiver_cpu_tester() { create_accounts( @@ -85,6 +114,8 @@ struct receiver_cpu_tester : validating_tester { for( auto account : { alice, game, winner, relay, unprivileged } ) set_cpu_weight( account, cpu_weight ); set_cpu_weight( idle, 0 ); + genesis_stipend = control->get_global_properties().configuration.notify_cpu_stipend; + set_notify_cpu_stipend( stipend_us ); produce_block(); push_action( token_account, "create"_n, token_account, @@ -96,6 +127,15 @@ struct receiver_cpu_tester : validating_tester { produce_block(); } + uint32_t genesis_stipend = 0; ///< notify_cpu_stipend at genesis, before the fixture sets stipend_us + + /// Sets chain_config::notify_cpu_stipend through sysio.bios setparams, keeping the other parameters. + void set_notify_cpu_stipend( uint32_t stipend ) { + auto cfg = control->get_global_properties().configuration; + cfg.notify_cpu_stipend = stipend; + push_action( config::system_account_name, setparams, config::system_account_name, mvo()( "params", cfg ) ); + } + /// sysio.bios setalimits data giving `account` these NET and CPU weights, keeping its RAM. mvo weights( account_name account, int64_t net_weight, int64_t cpu_weight ) const { int64_t ram_bytes = 0, current_net_weight = 0, current_cpu_weight = 0; @@ -173,11 +213,67 @@ struct receiver_cpu_tester : validating_tester { return push_transaction( trx, deadline, 0 ); } + /// Pushes with `billed` as the receipt's CPU, read the way a validator reads a block's receipt. + transaction_trace_ptr push_explicit( const signed_transaction& trx, cpu_usage_t billed ) { + auto ptrx = std::make_shared( trx ); + auto meta = transaction_metadata::start_recover_keys( ptrx, control->get_thread_pool(), control->get_chain_id(), + fc::microseconds::maximum(), + transaction_metadata::trx_type::input ).get(); + auto trace = control->test_push_transaction( meta, fc::time_point::maximum(), fc::microseconds::maximum(), + std::move( billed ), true ); + if( trace->except_ptr ) + std::rethrow_exception( trace->except_ptr ); + return trace; + } + transaction_trace_ptr transfer( account_name from, account_name to, const char* quantity, const std::string& memo, bool explicit_payer = false ) { return push_measured( make_trx( { transfer_action( from, to, quantity, memo, explicit_payer ) } ) ); } + std::optional long_spin_count; ///< long_spins(), once measured + + /** + * A loop count that keeps cpu_receiver_test busy for at least long_frame_us, well past the stipend. Runtimes differ + * by orders of magnitude, so it is measured: spins the game pays for directly, doubled until even the fastest of + * calibration_runs runs takes that long. The measuring takes a good part of a block's CPU, so the block is produced + * and the test's own transactions start in a new one. + */ + uint32_t long_spins() { + if( !long_spin_count ) { + uint32_t n = first_long_spins; + for( uint32_t i = 0; i <= max_spin_doublings && !long_spin_count; ++i, n *= 2 ) { + // Being descheduled only adds to a run's elapsed time, so the fastest of a few runs is the loop's cost. + int64_t fastest_us = std::numeric_limits::max(); + for( uint32_t run = 0; run < calibration_runs; ++run ) { + auto spin = get_action( game, "spin"_n, auth( game ), mvo()( "n", n + run ) ); // distinct transactions + auto trace = push_measured( make_trx( { spin } ) ); + fastest_us = std::min( fastest_us, trace->action_traces[0].elapsed.count() ); + } + if( fastest_us >= long_frame_us ) + long_spin_count = n; + } + BOOST_REQUIRE( long_spin_count ); + produce_block(); + } + return *long_spin_count; + } + + /// The smallest game entry of calibration_runs transfers to it with memo `command` and a count: `count` raised by + /// the run, so that the transactions differ. Being descheduled only adds to an entry. + uint32_t smallest_game_entry( const std::string& command, uint32_t count ) { + uint32_t smallest = std::numeric_limits::max(); + for( uint32_t run = 0; run < calibration_runs; ++run ) { + auto receipt = entries( transfer( alice, game, amount, command + std::to_string( count + run ) ) ); + BOOST_REQUIRE_EQUAL( receipt.size(), 2u ); + smallest = std::min( smallest, receipt[1] ); + } + return smallest; + } + + /// A transfer memo that keeps cpu_receiver_test's handler busy well past the stipend. + std::string long_spin_memo() { return spin_command + std::to_string( long_spins() ); } + const resource_limits::resource_object& usage( const controller& c, account_name account ) const { return c.db().get( account ); } @@ -252,10 +348,11 @@ BOOST_FIXTURE_TEST_CASE( transfer_between_plain_accounts_adds_no_entry, receiver produce_and_check_validator( { token_account, alice, bob } ); } FC_LOG_AND_RETHROW() -BOOST_FIXTURE_TEST_CASE( contract_pays_for_its_transfer_handler, receiver_cpu_tester ) try { +BOOST_FIXTURE_TEST_CASE( notified_contract_pays_only_past_the_stipend, receiver_cpu_tester ) try { + const auto memo = long_spin_memo(); auto before = cpu_windows( { token_account, alice, game } ); auto game_net = usage( *control, game ).net_usage; - auto trace = transfer( alice, game, amount, spin_memo ); + auto trace = transfer( alice, game, amount, memo ); const auto receipt = entries( trace ); BOOST_REQUIRE_EQUAL( receipt.size(), 2u ); @@ -263,7 +360,11 @@ BOOST_FIXTURE_TEST_CASE( contract_pays_for_its_transfer_handler, receiver_cpu_te const auto& handler = frame( trace, game, "transfer"_n ); BOOST_REQUIRE( handler.cpu_usage_us ); BOOST_TEST( handler.cpu_usage_us->value == receipt[1] ); + // sysio.token's entry carries the stipend, and the game's entry the rest of its handler. + BOOST_REQUIRE( handler.elapsed.count() > stipend_us ); + BOOST_TEST( receipt[0] >= stipend_us ); BOOST_TEST( receipt[1] > 0u ); + BOOST_TEST( receipt[1] <= most_past_stipend( handler.elapsed.count() ) ); BOOST_TEST( trace->total_cpu_usage_us.value == total( receipt ) ); BOOST_TEST( !frame( trace, alice, "transfer"_n ).cpu_usage_us ); // no code, so no entry check_billed( before, { token_account, game } ); @@ -271,6 +372,49 @@ BOOST_FIXTURE_TEST_CASE( contract_pays_for_its_transfer_handler, receiver_cpu_te produce_and_check_validator( { token_account, alice, game } ); } FC_LOG_AND_RETHROW() +BOOST_FIXTURE_TEST_CASE( notify_cpu_stipend_starts_at_100_us, receiver_cpu_tester ) try { + BOOST_TEST( genesis_stipend == config::default_notify_cpu_stipend ); + BOOST_TEST( config::default_notify_cpu_stipend == 100u ); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( stipend_follows_setparams, receiver_cpu_tester ) try { + // A larger stipend leaves more of the handler on sysio.token's entry. + constexpr int64_t larger = 2 * stipend_us; + const auto memo = long_spin_memo(); + set_notify_cpu_stipend( larger ); + auto before = cpu_windows( { token_account, alice, game } ); + auto trace = transfer( alice, game, amount, memo ); + auto receipt = entries( trace ); + BOOST_REQUIRE_EQUAL( receipt.size(), 2u ); + const auto& handler = frame( trace, game, "transfer"_n ); + BOOST_TEST( receipt[0] >= larger ); + BOOST_TEST( receipt[1] > 0u ); + BOOST_TEST( receipt[1] <= most_past_stipend( handler.elapsed.count(), larger ) ); + check_billed( before, { token_account, game } ); + produce_and_check_validator( { token_account, alice, game } ); + + // 0 turns the stipend off: a handler that returns at once bills the game, and a contract with no CPU cannot + // receive. + set_notify_cpu_stipend( 0 ); + before = cpu_windows( { token_account, alice, game } ); + trace = transfer( alice, game, amount, "" ); + receipt = entries( trace ); + BOOST_REQUIRE_EQUAL( receipt.size(), 2u ); + BOOST_TEST( receipt[1] > 0u ); + check_billed( before, { token_account, game } ); + BOOST_CHECK_EXCEPTION( transfer( alice, idle, amount, "" ), tx_cpu_usage_exceeded, + fc_exception_message_contains( idle_over_its_limit ) ); + produce_and_check_validator( { token_account, alice, game, idle } ); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( stipend_above_the_transaction_limit_is_rejected, receiver_cpu_tester ) try { + const uint32_t max_trx_cpu = control->get_global_properties().configuration.max_transaction_cpu_usage; + set_notify_cpu_stipend( max_trx_cpu ); + BOOST_CHECK_EXCEPTION( set_notify_cpu_stipend( max_trx_cpu + 1 ), action_validate_exception, + fc_exception_message_contains( stipend_over_trx_limit ) ); + produce_block(); +} FC_LOG_AND_RETHROW() + BOOST_FIXTURE_TEST_CASE( authorizer_without_cpu_or_net_is_billed_nothing, receiver_cpu_tester ) try { transfer( alice, carol, amount, "" ); set_weights( carol, 0, 0 ); @@ -280,11 +424,12 @@ BOOST_FIXTURE_TEST_CASE( authorizer_without_cpu_or_net_is_billed_nothing, receiv BOOST_REQUIRE_EQUAL( net_weight, 0 ); BOOST_REQUIRE_EQUAL( cpu_weight, 0 ); - // sysio.token pays for its transfer, CPU and NET, and the game for its handler, CPU only. + // sysio.token pays for its transfer, CPU and NET, and the game for its handler past the stipend, CPU only. + const auto memo = long_spin_memo(); auto before = cpu_windows( { token_account, carol, game } ); auto carol_net = usage( *control, carol ).net_usage; auto token_net = usage( *control, token_account ).net_usage; - auto trace = transfer( carol, game, amount, spin_memo ); + auto trace = transfer( carol, game, amount, memo ); BOOST_TEST( entries( trace ).size() == 2u ); check_billed( before, { token_account, game } ); BOOST_TEST( same_window( usage( *control, carol ).net_usage, carol_net ) ); @@ -292,40 +437,142 @@ BOOST_FIXTURE_TEST_CASE( authorizer_without_cpu_or_net_is_billed_nothing, receiv produce_and_check_validator( { token_account, carol, game } ); } FC_LOG_AND_RETHROW() -BOOST_FIXTURE_TEST_CASE( contract_without_cpu_receives_only_from_an_explicit_payer, receiver_cpu_tester ) try { - BOOST_CHECK_EXCEPTION( transfer( alice, idle, amount, spin_memo ), tx_cpu_usage_exceeded, +BOOST_FIXTURE_TEST_CASE( contract_without_cpu_receives_within_the_stipend, receiver_cpu_tester ) try { + // idle has no CPU. A handler the stipend covers costs it nothing: its entry is 0 and its CPU window stays put. + auto before = cpu_windows( { token_account, alice, idle } ); + auto trace = transfer( alice, idle, amount, "" ); + auto receipt = entries( trace ); + BOOST_REQUIRE_EQUAL( receipt.size(), 2u ); + BOOST_TEST( receipt[1] == 0u ); + BOOST_TEST( frame( trace, idle, "transfer"_n ).cpu_usage_us->value == 0u ); + check_billed( before, { token_account } ); + produce_and_check_validator( { token_account, alice, idle } ); + + // Past the stipend it owes CPU it does not have, so the transfer fails with the usual CPU error and moves nothing. + const auto memo = long_spin_memo(); + const auto alice_balance = get_currency_balance( token_account, token_symbol, alice ); + const auto idle_balance = get_currency_balance( token_account, token_symbol, idle ); + BOOST_CHECK_EXCEPTION( transfer( alice, idle, amount, memo ), tx_cpu_usage_exceeded, fc_exception_message_contains( idle_over_its_limit ) ); + BOOST_TEST( get_currency_balance( token_account, token_symbol, alice ) == alice_balance ); + BOOST_TEST( get_currency_balance( token_account, token_symbol, idle ) == idle_balance ); - auto before = cpu_windows( { token_account, alice, idle } ); - auto trace = transfer( alice, idle, amount, spin_memo, true ); + // An explicit payer pays for all of it. + before = cpu_windows( { token_account, alice, idle } ); + trace = transfer( alice, idle, amount, memo, true ); BOOST_TEST( entries( trace ).size() == 1u ); check_billed( before, { alice } ); produce_and_check_validator( { token_account, alice, idle } ); } FC_LOG_AND_RETHROW() +BOOST_FIXTURE_TEST_CASE( many_notifications_in_one_block_cost_the_contract_nothing, receiver_cpu_tester ) try { + // relay returns at once on transfers it has nothing to do for. Many such transfers to it from other accounts in one + // block bill it nothing, and its own actions in that block and the next still run. + transfer( alice, bob, bob_funding, "" ); + produce_block(); + auto before = cpu_windows( { relay } ); + for( uint32_t k = 0; k < many_notifications; ++k ) { + const auto quantity = asset( k + 1, token_symbol ).to_string(); // distinct transactions + auto receipt = entries( transfer( k % 2 == 0 ? alice : bob, relay, quantity.c_str(), "" ) ); + BOOST_REQUIRE_EQUAL( receipt.size(), 2u ); + BOOST_TEST( receipt[1] == 0u ); + } + check_billed( before, {} ); + auto own_spin = [&]( uint32_t n ) { + return push_measured( make_trx( { get_action( relay, "spin"_n, auth( relay ), mvo()( "n", n ) ) } ) ); + }; + BOOST_TEST( own_spin( short_spin_count )->action_traces[0].console == spun ); + produce_and_check_validator( { token_account, alice, bob, relay } ); + BOOST_TEST( own_spin( short_spin_count + 1 )->action_traces[0].console == spun ); + produce_and_check_validator( { token_account, alice, bob, relay } ); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( cold_module_load_takes_none_of_the_stipend, receiver_cpu_tester ) try { + // A contract with no CPU is notified for the first time, and its first run loads a large module no one has run + // before. Loading pauses billing: the frame's CPU and its deadline both leave the load out. With no leeway, the + // handler, which has nothing to do for transfers, still fits the stipend, though the load takes far longer: tens of + // milliseconds to compile or parse the module on each runtime, against a few hundred microseconds for a warm run on + // the interpreter. + create_accounts( { cold } ); + set_code( cold, test_contracts::sysio_system_wasm() ); // no transfer handler, and nothing else runs this code + set_cpu_weight( cold, 0 ); + produce_block(); + transfer( alice, bob, amount, "" ); // warms everything but cold's module + control->set_subjective_cpu_leeway( fc::microseconds( 0 ) ); + + // A block deadline, as a producer and a speculative node push every transaction with, enables the billing pause. + auto before = cpu_windows( { token_account, cold } ); + auto trace = push_measured( make_trx( { transfer_action( alice, cold, amount, "" ) } ), + fc::time_point::now() + fc::seconds( 10 ) ); + auto receipt = entries( trace ); + BOOST_REQUIRE_EQUAL( receipt.size(), 2u ); + BOOST_TEST( receipt[1] == 0u ); + BOOST_TEST( frame( trace, cold, "transfer"_n ).elapsed.count() > stipend_us ); // the load ran past the stipend + check_billed( before, { token_account } ); + control->set_subjective_cpu_leeway( fc::microseconds( config::default_subjective_cpu_leeway_us ) ); + produce_and_check_validator( { token_account, alice, cold } ); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( zero_entry_leaves_the_contracts_cpu_window_alone, receiver_cpu_tester ) try { + // relay spends CPU and then loses its weight, so its window holds more than its allowance of none. Billing it even + // 0 us would fail the window check. + push_measured( make_trx( { get_action( relay, "spin"_n, auth( relay ), mvo()( "n", long_spins() ) ) } ) ); + produce_block(); + set_cpu_weight( relay, 0 ); + produce_block(); + const auto [relay_cpu_us, greylisted, unlimited] = + control->get_cpu_limit( relay, control->pending_block_timestamp() ); + BOOST_REQUIRE( !unlimited ); + BOOST_REQUIRE_EQUAL( relay_cpu_us, 0 ); + BOOST_REQUIRE( usage( *control, relay ).cpu_usage.value_ex > 0 ); + + // A handler the stipend covers bills relay nothing, so its window is neither checked nor moved. + auto before = cpu_windows( { token_account, alice, relay } ); + auto trace = transfer( alice, relay, amount, "" ); + auto receipt = entries( trace ); + BOOST_REQUIRE_EQUAL( receipt.size(), 2u ); + BOOST_TEST( receipt[1] == 0u ); + check_billed( before, { token_account } ); + produce_and_check_validator( { token_account, alice, relay } ); + + // Past the stipend it is over its limit. + BOOST_CHECK_EXCEPTION( transfer( alice, relay, amount, long_spin_memo() ), tx_cpu_usage_exceeded, + fc_exception_message_contains( relay_over_its_limit ) ); + produce_block(); +} FC_LOG_AND_RETHROW() + BOOST_FIXTURE_TEST_CASE( receiver_over_its_limit_fails_on_account_cpu_limit, receiver_cpu_tester ) try { - // A real deadline: the handler runs until idle's remaining CPU, which is tighter than the transaction's limit. + // A real deadline: the handler runs through its stipend and then idle's remaining CPU, which together are tighter + // than the transaction's limit. const auto deadline = fc::time_point::now() + fc::seconds( 10 ); BOOST_CHECK_EXCEPTION( push_measured( make_trx( { transfer_action( alice, idle, amount, "forever" ) } ), deadline ), tx_cpu_usage_exceeded, fc_exception_message_contains( "reached account cpu limit" ) ); produce_block(); } FC_LOG_AND_RETHROW() -BOOST_FIXTURE_TEST_CASE( game_pays_for_its_payout_and_the_winner_for_its_handler, receiver_cpu_tester ) try { - // Called directly, the game is the input payer, so its transfer stays on the input entry. +BOOST_FIXTURE_TEST_CASE( game_pays_the_winners_stipend_and_the_winner_the_rest, receiver_cpu_tester ) try { + // Called directly, the game is the input payer: its transfer stays on the input entry, which pays the winner's + // stipend, and the winner pays for the rest of its handler. + const auto memo = long_spin_memo(); auto before = cpu_windows( { token_account, game, winner } ); auto payout = get_action( game, "payout"_n, auth( game ), - mvo()( "to", winner )( "quantity", asset::from_string( amount ) )( "memo", spin_memo ) ); + mvo()( "to", winner )( "quantity", asset::from_string( amount ) )( "memo", memo ) ); auto trace = push_measured( make_trx( { payout } ) ); auto receipt = entries( trace ); BOOST_REQUIRE_EQUAL( receipt.size(), 2u ); - BOOST_TEST( frame( trace, winner, "transfer"_n ).cpu_usage_us->value == receipt[1] ); + const auto& winner_handler = frame( trace, winner, "transfer"_n ); + BOOST_TEST( winner_handler.cpu_usage_us->value == receipt[1] ); + BOOST_REQUIRE( winner_handler.elapsed.count() > stipend_us ); + BOOST_TEST( receipt[0] >= stipend_us ); + BOOST_TEST( receipt[1] > 0u ); + BOOST_TEST( receipt[1] <= most_past_stipend( winner_handler.elapsed.count() ) ); BOOST_TEST( !frame( trace, game, "transfer"_n ).cpu_usage_us ); // billed to the game already BOOST_TEST( !frame( trace, token_account, "transfer"_n ).cpu_usage_us ); check_billed( before, { game, winner } ); produce_and_check_validator( { token_account, game, winner } ); - // From the game's transfer handler: the game pays for its handler and its transfer, the winner for its handler. + // From the game's transfer handler: the game's transfer notifies the winner, so the game's entry pays the winner's + // stipend on top of the game's own code past its stipend. before = cpu_windows( { token_account, alice, game, winner } ); trace = transfer( alice, game, amount, "pay:winner" ); receipt = entries( trace ); @@ -333,22 +580,66 @@ BOOST_FIXTURE_TEST_CASE( game_pays_for_its_payout_and_the_winner_for_its_handler BOOST_TEST( trace->action_traces[0].cpu_usage_us->value == receipt[0] ); BOOST_TEST( frame( trace, game, "transfer"_n ).cpu_usage_us->value == receipt[1] ); BOOST_TEST( !frame( trace, game, "transfer"_n, 1 ).cpu_usage_us ); // notified of its own transfer - BOOST_TEST( frame( trace, winner, "transfer"_n ).cpu_usage_us->value == receipt[2] ); - check_billed( before, { token_account, game, winner } ); + const auto& paid = frame( trace, winner, "transfer"_n ); + BOOST_TEST( paid.cpu_usage_us->value == receipt[2] ); + BOOST_TEST( receipt[2] <= most_past_stipend( paid.elapsed.count() ) ); + // The game's frames: its handler, its transfer, and its notification of that transfer. + const int64_t game_frames_us = frame( trace, game, "transfer"_n ).elapsed.count() + + frame( trace, token_account, "transfer"_n, 1 ).elapsed.count() + + frame( trace, game, "transfer"_n, 1 ).elapsed.count(); + BOOST_TEST( receipt[1] > 0u ); // the winner's stipend at least + BOOST_TEST( receipt[1] <= most_past_stipend( game_frames_us ) + paid.elapsed.count() ); + flat_set billed{ token_account, game }; + if( receipt[2] > 0 ) + billed.insert( winner ); + check_billed( before, billed ); produce_and_check_validator( { token_account, alice, game, winner } ); } FC_LOG_AND_RETHROW() BOOST_FIXTURE_TEST_CASE( forwarded_notification_bills_the_forwarder, receiver_cpu_tester ) try { - auto before = cpu_windows( { token_account, relay, winner } ); - auto trace = transfer( alice, relay, amount, "forward:winner" ); + auto before = cpu_windows( { token_account, relay, winner } ); + auto trace = transfer( alice, relay, amount, "forward:winner" ); + auto receipt = entries( trace ); - BOOST_TEST( entries( trace ).size() == 2u ); - BOOST_TEST( frame( trace, relay, "transfer"_n ).cpu_usage_us.has_value() ); - BOOST_TEST( !frame( trace, winner, "transfer"_n ).cpu_usage_us ); - check_billed( before, { token_account, relay } ); + // The winner's handler bills the relay's entry and shares its stipend. + BOOST_REQUIRE_EQUAL( receipt.size(), 2u ); + const auto& relay_handler = frame( trace, relay, "transfer"_n ); + const auto& forwarded = frame( trace, winner, "transfer"_n ); + BOOST_TEST( relay_handler.cpu_usage_us->value == receipt[1] ); + BOOST_TEST( !forwarded.cpu_usage_us ); + BOOST_TEST( receipt[1] <= most_past_stipend( relay_handler.elapsed.count() + forwarded.elapsed.count() ) ); + flat_set billed{ token_account }; + if( receipt[1] > 0 ) + billed.insert( relay ); + check_billed( before, billed ); produce_and_check_validator( { token_account, relay, winner } ); } FC_LOG_AND_RETHROW() +BOOST_FIXTURE_TEST_CASE( stipend_is_shared_by_the_frames_billed_to_the_contract, receiver_cpu_tester ) try { + // The game's handler spins and sends itself an inline spin: both frames bill its one entry, with one stipend. + const uint32_t n = long_spins() / 2; // each frame runs about half of long_frame_us, well past the stipend + auto before = cpu_windows( { token_account, alice, game } ); + auto trace = transfer( alice, game, amount, spinsend_command + std::to_string( n ) ); + auto receipt = entries( trace ); + BOOST_REQUIRE_EQUAL( receipt.size(), 2u ); + const auto& handler = frame( trace, game, "transfer"_n ); + const auto& spin = frame( trace, game, "spin"_n ); + BOOST_TEST( handler.cpu_usage_us->value == receipt[1] ); + BOOST_TEST( !spin.cpu_usage_us ); // on the handler's entry + BOOST_TEST( spin.console == spun ); + BOOST_TEST( receipt[1] > 0u ); + BOOST_TEST( receipt[1] <= most_past_stipend( handler.elapsed.count() + spin.elapsed.count() ) ); + check_billed( before, { token_account, game } ); + produce_and_check_validator( { token_account, alice, game } ); + + // The same loops in one frame bill about as much. A stipend for each frame would leave the two-frame entry a + // whole stipend lower; the second frame's own overhead only raises it. + const uint32_t one_frame = smallest_game_entry( spin_command, 2 * n ); + const uint32_t two_frames = smallest_game_entry( spinsend_command, n ); + BOOST_TEST( static_cast( two_frames ) > static_cast( one_frame ) - stipend_us / 2 ); + produce_and_check_validator( { token_account, alice, game } ); +} FC_LOG_AND_RETHROW() + BOOST_FIXTURE_TEST_CASE( explicit_payer_pays_for_everything_below_it, receiver_cpu_tester ) try { auto before = cpu_windows( { token_account, alice, game, winner } ); auto trace = transfer( alice, game, amount, "pay:winner", true ); @@ -365,11 +656,11 @@ BOOST_FIXTURE_TEST_CASE( explicit_payer_pays_for_everything_below_it, receiver_c produce_block(); } FC_LOG_AND_RETHROW() -BOOST_FIXTURE_TEST_CASE( msig_exec_bills_the_called_contract, receiver_cpu_tester ) try { +BOOST_FIXTURE_TEST_CASE( msig_exec_bills_the_called_contract_without_a_stipend, receiver_cpu_tester ) try { transaction proposed; - proposed.actions.emplace_back( get_action( game, "spin"_n, auth( game ), mvo()( "n", spin_count ) ) ); + proposed.actions.emplace_back( get_action( game, "spin"_n, auth( game ), mvo()( "n", short_spin_count ) ) ); set_transaction_headers( proposed, proposal_expiration_sec ); - push_action( msig_account, "propose"_n, alice, + push_action( msig_account, "propose"_n, auth( alice, true ), mvo()( "proposer", alice )( "proposal_name", "spin" )( "trx", proposed ) ( "requested", vector{ { game, config::active_name } } ) ); push_action( msig_account, "approve"_n, game, @@ -383,7 +674,11 @@ BOOST_FIXTURE_TEST_CASE( msig_exec_bills_the_called_contract, receiver_cpu_teste ( "executer", alice ) ) } ) ); auto receipt = entries( trace ); BOOST_REQUIRE_EQUAL( receipt.size(), 2u ); - BOOST_TEST( frame( trace, game, "spin"_n ).cpu_usage_us->value == receipt[1] ); + // An action sent to the game, not a notification, bills it from the start, as calling it directly does. + const auto& spin = frame( trace, game, "spin"_n ); + BOOST_TEST( spin.cpu_usage_us->value == receipt[1] ); + BOOST_TEST( receipt[1] > 0u ); + BOOST_TEST( receipt[1] <= spin.elapsed.count() ); check_billed( before, { msig_account, game } ); produce_and_check_validator( { msig_account, alice, game } ); } FC_LOG_AND_RETHROW() @@ -393,7 +688,7 @@ BOOST_FIXTURE_TEST_CASE( overhead_goes_on_input_entries_only, receiver_cpu_teste auto cfg = control->get_global_properties().configuration; cfg.min_transaction_cpu_usage = high_min_trx_cpu_us; // measured, since the new minimum applies to this transaction already - push_measured( make_trx( { get_action( config::system_account_name, "setparams"_n, + push_measured( make_trx( { get_action( config::system_account_name, setparams, auth( config::system_account_name ), mvo()( "params", cfg ) ) } ) ); produce_block(); @@ -401,8 +696,8 @@ BOOST_FIXTURE_TEST_CASE( overhead_goes_on_input_entries_only, receiver_cpu_teste auto receipt = entries( trace ); BOOST_REQUIRE_EQUAL( receipt.size(), 2u ); BOOST_TEST( total( receipt ) >= high_min_trx_cpu_us ); - // the receiver entry is its frame's run alone, which the frame's elapsed covers - BOOST_TEST( receipt[1] <= static_cast( frame( trace, game, "transfer"_n ).elapsed.count() ) ); + // the receiver entry is its frame's run past the stipend alone, which the frame's elapsed covers + BOOST_TEST( receipt[1] <= most_past_stipend( frame( trace, game, "transfer"_n ).elapsed.count() ) ); BOOST_TEST( receipt[0] > receipt[1] ); produce_and_check_validator( { token_account, alice, game } ); } FC_LOG_AND_RETHROW() @@ -506,8 +801,9 @@ BOOST_FIXTURE_TEST_CASE( transaction_failing_its_final_checks_bills_no_receiver, failed = std::get<0>( x ); } ); - // Both handlers run to the end, and then idle, which has no CPU, fails the final checks. The transaction is billed - // as a failed one: its CPU stays on the input actions, and neither receiver is billed. + // Both handlers run to the end, and then idle, which has no CPU and ran past its stipend, fails the final checks. + // The transaction is billed as a failed one: its CPU stays on the input actions, and neither receiver is billed. + const auto idle_memo = long_spin_memo(); for( bool speculative : { false, true } ) { for( bool payer_billing_disabled : { true, false } ) { BOOST_TEST_CONTEXT( "speculative " << speculative << ", payer billing disabled " << payer_billing_disabled ) { @@ -518,7 +814,7 @@ BOOST_FIXTURE_TEST_CASE( transaction_failing_its_final_checks_bills_no_receiver, const auto now = control->pending_block_time(); failed.reset(); auto trx = make_trx( { transfer_action( alice, game, amount, spin_memo ), - transfer_action( alice, idle, amount, "" ) } ); + transfer_action( alice, idle, amount, idle_memo ) } ); BOOST_CHECK_EXCEPTION( push_measured( trx ), tx_cpu_usage_exceeded, fc_exception_message_contains( idle_over_its_limit ) ); BOOST_REQUIRE( failed ); @@ -541,42 +837,50 @@ BOOST_FIXTURE_TEST_CASE( transaction_failing_its_final_checks_bills_no_receiver, BOOST_FIXTURE_TEST_CASE( receiver_limit_includes_cpu_granted_in_the_transaction, receiver_cpu_tester ) try { // idle has no CPU as sysio.token notifies it, and the same transaction grants it CPU, after its handler or before. - // The final checks read idle's limit as the transaction leaves it. + // Its handler runs past the stipend, and the final checks read idle's limit as the transaction leaves it. + const auto memo = long_spin_memo(); for( bool grant_first : { false, true } ) { BOOST_TEST_CONTEXT( "grant first " << grant_first ) { set_cpu_weight( idle, 0 ); produce_block(); auto before = cpu_windows( { token_account, alice, idle } ); - vector actions{ transfer_action( alice, idle, amount, "" ), cpu_weight_action( idle, cpu_weight ) }; + vector actions{ transfer_action( alice, idle, amount, memo ), cpu_weight_action( idle, cpu_weight ) }; if( grant_first ) std::ranges::reverse( actions ); auto trace = push_measured( make_trx( std::move( actions ) ) ); auto receipt = entries( trace ); BOOST_REQUIRE_EQUAL( receipt.size(), 3u ); BOOST_TEST( frame( trace, idle, "transfer"_n ).cpu_usage_us->value == receipt[2] ); + BOOST_TEST( receipt[2] > 0u ); check_billed( before, { token_account, idle } ); produce_and_check_validator( { token_account, alice, idle } ); } } } FC_LOG_AND_RETHROW() -BOOST_FIXTURE_TEST_CASE( receiver_subjective_bill_limits_its_frame, receiver_cpu_tester ) try { +BOOST_FIXTURE_TEST_CASE( receiver_subjective_bill_limits_its_frame_past_the_stipend, receiver_cpu_tester ) try { auto& sub_bill = control->get_mutable_subjective_billing(); sub_bill.reset(); + const auto memo = long_spin_memo(); transfer( alice, bob, amount, "" ); const auto now = control->pending_block_time(); const auto [game_cpu_us, greylisted, unlimited] = control->get_cpu_limit( game, block_timestamp_type( now ) ); BOOST_REQUIRE( !unlimited ); - // CPU pending for the game from another transaction leaves it none, leeway included. + // CPU pending for the game from another transaction leaves it none, leeway included: its frame stops when the + // stipend runs out. const auto pending_id = transaction_id_type::hash( std::string( "pending" ) ); sub_bill.subjective_bill( pending_id, fc::time_point_sec( now + fc::seconds( pending_bill_lifetime_sec ) ), {}, { { game, fc::microseconds( game_cpu_us + beyond_any_leeway_us ) } } ); const auto deadline = fc::time_point::now() + fc::seconds( 10 ); - auto trx = make_trx( { transfer_action( alice, game, amount, spin_memo ) } ); + auto trx = make_trx( { transfer_action( alice, game, amount, memo ) } ); BOOST_CHECK_EXCEPTION( push_measured( trx, deadline ), tx_cpu_usage_exceeded, fc_exception_message_contains( account_cpu_limit_reached ) ); transfer( alice, bob, amount, "spin:1" ); // reaches no contract + // A handler within the stipend still runs, and bills the game nothing. + auto receipt = entries( push_measured( make_trx( { transfer_action( alice, game, amount, "" ) } ), deadline ) ); + BOOST_REQUIRE_EQUAL( receipt.size(), 2u ); + BOOST_TEST( receipt[1] == 0u ); sub_bill.remove_subjective_billing( pending_id, 0 ); BOOST_TEST( entries( push_measured( trx, deadline ) ).size() == 2u ); @@ -598,19 +902,6 @@ BOOST_FIXTURE_TEST_CASE( read_only_transaction_skips_receiver_limits, receiver_c } FC_LOG_AND_RETHROW() BOOST_FIXTURE_TEST_CASE( explicit_receipt_entries_follow_the_billing_switches, receiver_cpu_tester ) try { - // An explicitly billed push reads its receipt the way a validator does. - auto push_explicit = [&]( const signed_transaction& trx, cpu_usage_t billed ) { - auto ptrx = std::make_shared( trx ); - auto meta = transaction_metadata::start_recover_keys( ptrx, control->get_thread_pool(), control->get_chain_id(), - fc::microseconds::maximum(), - transaction_metadata::trx_type::input ).get(); - auto trace = control->test_push_transaction( meta, fc::time_point::maximum(), fc::microseconds::maximum(), - billed, true ); - if( trace->except_ptr ) - std::rethrow_exception( trace->except_ptr ); - return trace; - }; - auto switching = make_trx( { transfer_action( alice, game, amount, spin_memo ) } ); BOOST_CHECK_EXCEPTION( push_explicit( switching, { 500, 500, 500 } ), transaction_exception, fc_exception_message_contains( receipt_has_extra_entry ) ); @@ -628,50 +919,25 @@ BOOST_FIXTURE_TEST_CASE( explicit_receipt_entries_follow_the_billing_switches, r check_billed( before, { token_account, game } ); produce_and_check_validator( { token_account, game } ); - // A receiver entry the receipt leaves out bills nothing, and the receipt built here gets it. + // A receiver entry the receipt leaves out bills nothing, and the receipt built here gets it as 0, which leaves the + // game's CPU window alone. The validator replays the block to the same windows. before = cpu_windows( { token_account, game } ); trace = push_explicit( make_trx( { transfer_action( alice, game, amount, "spin:10" ) } ), { 500 } ); BOOST_TEST( entries( trace ) == std::vector( { 500, 0 } ), boost::test_tools::per_element() ); BOOST_TEST( frame( trace, game, "transfer"_n ).cpu_usage_us->value == 0u ); - check_billed( before, { token_account, game } ); + check_billed( before, { token_account } ); produce_and_check_validator( { token_account, game } ); } FC_LOG_AND_RETHROW() -BOOST_FIXTURE_TEST_CASE( context_free_receiver_entry_is_the_same_under_light_validation, receiver_cpu_tester ) try { - auto before = cpu_windows( { system_receiver, game } ); - auto trace = push_measured( make_trx( { get_action( system_receiver, "cfspin"_n, auth( alice ), - mvo()( "to", game )( "n", spin_count ) ) } ) ); - const auto receipt = entries( trace ); - BOOST_REQUIRE_EQUAL( receipt.size(), 2u ); - const auto& spin = frame( trace, game, "spin"_n ); - BOOST_TEST( spin.context_free ); - BOOST_TEST( spin.console == spun ); - BOOST_TEST( spin.cpu_usage_us->value == receipt[1] ); - check_billed( before, { system_receiver, game } ); - produce_and_check_validator( { system_receiver, game } ); - - // A node that skips context-free actions in this producer's blocks builds the same receipt and windows. - fc::temp_directory dir; - auto [cfg, genesis] = tester::default_config( dir ); - cfg.trusted_producers = { control->head().producer() }; - tester light( cfg, genesis ); - transaction_trace_ptr light_trace; - auto connection = light.control->applied_transaction().connect( - [&]( std::tuple x ) { - if( std::get<0>( x )->id == trace->id ) - light_trace = std::get<0>( x ); - } ); - for( uint32_t n = 2; n <= control->head().block_num(); ++n ) - light.push_block( control->fetch_block_by_number( n ) ); - BOOST_REQUIRE( light_trace && light_trace->receipt ); - BOOST_TEST( ( *light_trace->receipt == *trace->receipt ) ); - BOOST_TEST( frame( light_trace, game, "spin"_n ).console.empty() ); // not run - for( auto a : { system_receiver, game } ) { - BOOST_TEST_CONTEXT( a << " on the light node" ) { - BOOST_TEST( same_window( usage( *control, a ).cpu_usage, usage( *light.control, a ).cpu_usage ) ); - BOOST_TEST( same_window( usage( *control, a ).net_usage, usage( *light.control, a ).net_usage ) ); - } - } +BOOST_FIXTURE_TEST_CASE( validator_bills_the_producers_split, receiver_cpu_tester ) try { + // A validator bills the receipt's entries as given and never applies the stipend itself: a split no node would + // measure, with nothing on the receiver, still bills exactly as written. + const auto memo = long_spin_memo(); + auto before = cpu_windows( { token_account, idle } ); + auto trace = push_explicit( make_trx( { transfer_action( alice, idle, amount, memo ) } ), { 5'000, 0 } ); + BOOST_TEST( entries( trace ) == std::vector( { 5'000, 0 } ), boost::test_tools::per_element() ); + check_billed( before, { token_account } ); + produce_and_check_validator( { token_account, alice, idle } ); } FC_LOG_AND_RETHROW() BOOST_FIXTURE_TEST_CASE( block_with_wrong_receipt_entry_count_is_rejected, receiver_cpu_tester ) try { @@ -722,9 +988,10 @@ BOOST_FIXTURE_TEST_CASE( only_a_privileged_sysio_account_is_a_system_receiver, r check_billed( before, { token_account } ); produce_and_check_validator( { token_account, system_receiver } ); - // The sysio prefix alone does not make one: an unprivileged sysio.* contract pays for its handler. + // The sysio prefix alone does not make one: an unprivileged sysio.* contract pays for its handler past the stipend. + const auto memo = long_spin_memo(); before = cpu_windows( { token_account, unprivileged } ); - trace = transfer( alice, unprivileged, amount, spin_memo ); + trace = transfer( alice, unprivileged, amount, memo ); auto receipt = entries( trace ); BOOST_REQUIRE_EQUAL( receipt.size(), 2u ); BOOST_TEST( frame( trace, unprivileged, "transfer"_n ).cpu_usage_us->value == receipt[1] ); @@ -735,6 +1002,7 @@ BOOST_FIXTURE_TEST_CASE( only_a_privileged_sysio_account_is_a_system_receiver, r BOOST_FIXTURE_TEST_CASE( entries_follow_their_input_actions, receiver_cpu_tester ) try { auto& sub_bill = control->get_mutable_subjective_billing(); transfer( alice, bob, "10.0000 TKN", "" ); + const auto memo = long_spin_memo(); produce_block(); // Two inputs with different authorizers each reach a contract. The receiver entries follow the input entries in @@ -746,8 +1014,8 @@ BOOST_FIXTURE_TEST_CASE( entries_follow_their_input_actions, receiver_cpu_tester start_speculative_block(); const auto now = control->pending_block_time(); const auto* quantity = payer_billing_disabled ? "1.0000 TKN" : "2.0000 TKN"; - auto trace = push_measured( make_trx( { transfer_action( alice, game, quantity, spin_memo ), - transfer_action( bob, winner, quantity, spin_memo ) } ) ); + auto trace = push_measured( make_trx( { transfer_action( alice, game, quantity, memo ), + transfer_action( bob, winner, quantity, memo ) } ) ); auto receipt = entries( trace ); BOOST_REQUIRE_EQUAL( receipt.size(), 4u ); BOOST_TEST( frame( trace, game, "transfer"_n ).cpu_usage_us->value == receipt[2] ); @@ -764,25 +1032,31 @@ BOOST_FIXTURE_TEST_CASE( entries_follow_their_input_actions, receiver_cpu_tester } auto before = cpu_windows( { token_account, alice, bob, game, winner } ); - push_measured( make_trx( { transfer_action( alice, game, amount, spin_memo ), - transfer_action( bob, winner, amount, spin_memo ) } ) ); + push_measured( make_trx( { transfer_action( alice, game, amount, memo ), + transfer_action( bob, winner, amount, memo ) } ) ); check_billed( before, { token_account, game, winner } ); produce_and_check_validator( { token_account, alice, bob, game, winner } ); } FC_LOG_AND_RETHROW() BOOST_FIXTURE_TEST_CASE( contract_reached_twice_gets_an_entry_each_time, receiver_cpu_tester ) try { auto& sub_bill = control->get_mutable_subjective_billing(); + const auto memo = long_spin_memo(); sub_bill.reset(); sub_bill.disable_payer_billing( false ); start_speculative_block(); const auto now = control->pending_block_time(); - auto trx = make_trx( { transfer_action( alice, game, amount, spin_memo ), - transfer_action( alice, game, amount, spin_memo ) } ); + auto trx = make_trx( { transfer_action( alice, game, amount, memo ), + transfer_action( alice, game, amount, memo ) } ); auto trace = push_measured( trx ); auto receipt = entries( trace ); BOOST_REQUIRE_EQUAL( receipt.size(), 4u ); - BOOST_TEST( frame( trace, game, "transfer"_n, 0 ).cpu_usage_us->value == receipt[2] ); - BOOST_TEST( frame( trace, game, "transfer"_n, 1 ).cpu_usage_us->value == receipt[3] ); + // Each notification is its own switch, with its own stipend. + for( size_t occurrence : { 0u, 1u } ) { + const auto& handler = frame( trace, game, "transfer"_n, occurrence ); + BOOST_TEST( handler.cpu_usage_us->value == receipt[2 + occurrence] ); + BOOST_TEST( receipt[2 + occurrence] > 0u ); + BOOST_TEST( receipt[2 + occurrence] <= most_past_stipend( handler.elapsed.count() ) ); + } BOOST_TEST( sub_bill.get_subjective_bill( game, now ).count() == receipt[2] + receipt[3] ); control->abort_block(); @@ -794,17 +1068,19 @@ BOOST_FIXTURE_TEST_CASE( contract_reached_twice_gets_an_entry_each_time, receive BOOST_FIXTURE_TEST_CASE( receiver_that_pays_for_another_input_is_billed_once, receiver_cpu_tester ) try { auto& sub_bill = control->get_mutable_subjective_billing(); + const auto memo = long_spin_memo(); sub_bill.reset(); sub_bill.disable_payer_billing( false ); start_speculative_block(); const auto now = control->pending_block_time(); - // The game pays for its own spin, an input, and for its transfer handler, a receiver entry. + // The game pays for its own spin, an input, and for its transfer handler past the stipend, a receiver entry. auto spin = get_action( game, "spin"_n, auth( game ), mvo()( "n", spin_count ) ); - auto trx = make_trx( { spin, transfer_action( alice, game, amount, spin_memo ) } ); + auto trx = make_trx( { spin, transfer_action( alice, game, amount, memo ) } ); auto trace = push_measured( trx ); auto receipt = entries( trace ); BOOST_REQUIRE_EQUAL( receipt.size(), 3u ); BOOST_TEST( frame( trace, game, "transfer"_n ).cpu_usage_us->value == receipt[2] ); + BOOST_TEST( receipt[2] > 0u ); BOOST_TEST( sub_bill.get_subjective_bill( game, now ).count() == receipt[0] + receipt[2] ); control->abort_block(); @@ -826,7 +1102,10 @@ BOOST_FIXTURE_TEST_CASE( explicit_payer_covers_only_its_own_action, receiver_cpu BOOST_REQUIRE_EQUAL( receipt.size(), 3u ); BOOST_TEST( !frame( trace, game, "transfer"_n ).cpu_usage_us ); BOOST_TEST( frame( trace, relay, "transfer"_n ).cpu_usage_us->value == receipt[2] ); - check_billed( before, { token_account, alice, relay } ); + flat_set billed{ token_account, alice }; + if( receipt[2] > 0 ) + billed.insert( relay ); + check_billed( before, billed ); produce_and_check_validator( { token_account, alice, game, winner, relay } ); } FC_LOG_AND_RETHROW() @@ -841,14 +1120,15 @@ BOOST_FIXTURE_TEST_CASE( receiver_frame_stops_at_the_transaction_limit, receiver } FC_LOG_AND_RETHROW() BOOST_FIXTURE_TEST_CASE( greylisted_receiver_fails_as_greylisted, receiver_cpu_tester ) try { - // On a speculative block, a greylisted contract with no CPU fails as greylisted, both while its frame runs and in - // the final checks. + // On a speculative block, a greylisted contract with no CPU fails as greylisted past its stipend, both while its + // frame runs and in the final checks. control->add_resource_greylist( idle ); + const auto memo = long_spin_memo(); start_speculative_block(); const auto deadline = fc::time_point::now() + fc::seconds( 10 ); BOOST_CHECK_EXCEPTION( push_measured( make_trx( { transfer_action( alice, idle, amount, "forever" ) } ), deadline ), greylist_cpu_usage_exceeded, fc_exception_message_contains( greylisted_frame_stopped ) ); - BOOST_CHECK_EXCEPTION( push_measured( make_trx( { transfer_action( alice, idle, amount, "" ) } ), deadline ), + BOOST_CHECK_EXCEPTION( push_measured( make_trx( { transfer_action( alice, idle, amount, memo ) } ), deadline ), greylist_cpu_usage_exceeded, fc_exception_message_contains( idle_over_greylisted_limit ) ); control->abort_block(); control->remove_resource_greylist( idle ); @@ -862,11 +1142,12 @@ BOOST_FIXTURE_TEST_CASE( receiver_code_is_read_as_its_frame_starts, receiver_cpu }; // Code set earlier in the transaction counts: bob, a plain account, pays for the handler it just got. + const auto memo = long_spin_memo(); set_cpu_weight( bob, cpu_weight ); produce_block(); auto before = cpu_windows( { token_account, bob } ); auto trace = push_measured( make_trx( { set_code_action( bob, bytes( wasm.begin(), wasm.end() ) ), - transfer_action( alice, bob, amount, spin_memo ) } ) ); + transfer_action( alice, bob, amount, memo ) } ) ); auto receipt = entries( trace ); BOOST_REQUIRE_EQUAL( receipt.size(), 3u ); BOOST_TEST( frame( trace, bob, "transfer"_n ).cpu_usage_us->value == receipt[2] ); diff --git a/unittests/snapshots/blocks.index b/unittests/snapshots/blocks.index index 111411689bce9b936fc5928d7c3d0c067fcb13cc..53b9fa37ddebf67070af92151b244ed17e928c83 100644 GIT binary patch literal 232 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 a-k0IUcfd_2Y1`f(@S8C09)LDNkpBb3s4_+X diff --git a/unittests/snapshots/snap_v1.bin.gz b/unittests/snapshots/snap_v1.bin.gz index 9fa23201328cdd62f9a4fbc8b1c828a4ff5301e1..d250ff5c66681a4eb2a2bbefced1e6518e4c38b8 100644 GIT binary patch literal 54445 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 U>+e20V<5x+zb~}{x)>HB0ON7d=l}o! diff --git a/unittests/snapshots/snap_v1.bin.json.gz b/unittests/snapshots/snap_v1.bin.json.gz index 11baaf2375317bd72ff03c4164beb714c8727481..edd095ee1e53302ed8b574face7bfd465812a72a 100644 GIT binary patch literal 92838 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%0A{H+n)&oYFdz88KZz{H~RwQJjt|slxfMA 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 UjVF(>%-7%k9|S^xk5 diff --git a/unittests/snapshots/snap_v1.json.gz b/unittests/snapshots/snap_v1.json.gz index 3b19dbcad721cdcf383c74f931d1e8993673f212..62183327ce82b64af6432cb96f87903de536d2a7 100644 GIT binary patch literal 92542 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

<<@1!=io|kBE>J3e7zdP%`UvPW3$9vKDSjqV# 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%0D{NICa+BnJr5B@Dgh{7TUL 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, to, spin_action, std::make_tuple( n ) ).send_context_free(); -} - void cpu_receiver_test::notify( name to ) { require_recipient( to ); } diff --git a/unittests/test-contracts/cpu_receiver_test/cpu_receiver_test.hpp b/unittests/test-contracts/cpu_receiver_test/cpu_receiver_test.hpp index 200b515b8c..fd8bb6715d 100644 --- a/unittests/test-contracts/cpu_receiver_test/cpu_receiver_test.hpp +++ b/unittests/test-contracts/cpu_receiver_test/cpu_receiver_test.hpp @@ -13,6 +13,7 @@ class [[sysio::contract]] cpu_receiver_test : public sysio::contract { /** * Handles a sysio.token transfer this contract is notified of. A transfer to it does what the memo says: * spin: loops n times + * spinsend: loops n times and sends itself an inline spin of n loops * forward: forwards the notification to acct * pay: pays the quantity to acct with sysio.token, memo "spin:1000" * forever loops until the transaction runs out of CPU @@ -25,14 +26,10 @@ class [[sysio::contract]] cpu_receiver_test : public sysio::contract { [[sysio::action]] void payout( sysio::name to, sysio::asset quantity, std::string memo ); - /// Loops n times and prints that it ran. It needs no authorization and is context free. + /// Loops n times and prints that it ran. It needs no authorization. [[sysio::action]] void spin( uint32_t n ); - /// Sends `to` a context-free inline `spin` of n loops. - [[sysio::action]] - void cfspin( sysio::name to, uint32_t n ); - /// Notifies `to` of this action, without authorization or writes, so a read-only transaction can run it. [[sysio::action]] void notify( sysio::name to ); diff --git a/unittests/test-contracts/cpu_receiver_test/cpu_receiver_test.wasm b/unittests/test-contracts/cpu_receiver_test/cpu_receiver_test.wasm index 8ddd90a95533d5406c8a5916d96df80678fdf8fe..e34722538a10c94a3d69b47bd19f98cb2a326be7 100755 GIT binary patch delta 3793 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 diff --git a/unittests/test-contracts/params_test/params_test.abi b/unittests/test-contracts/params_test/params_test.abi index e1f2d7eb42..b0eebabe16 100644 --- a/unittests/test-contracts/params_test/params_test.abi +++ b/unittests/test-contracts/params_test/params_test.abi @@ -57,6 +57,11 @@ "name": "throwrvia2", "base": "", "fields": [] + }, + { + "name": "throwstipend", + "base": "", + "fields": [] } ], "actions": [ @@ -114,6 +119,11 @@ "name": "throwrvia2", "type": "throwrvia2", "ricardian_contract": "" + }, + { + "name": "throwstipend", + "type": "throwstipend", + "ricardian_contract": "" } ], "tables": [], diff --git a/unittests/test-contracts/params_test/params_test.cpp b/unittests/test-contracts/params_test/params_test.cpp index a093fafff4..0779c3a5ed 100644 --- a/unittests/test-contracts/params_test/params_test.cpp +++ b/unittests/test-contracts/params_test/params_test.cpp @@ -146,7 +146,7 @@ class [[sysio::contract("params_test")]] params_test : public sysio::contract { ASSERT_EQ(old_way_params.target_block_net_usage_pct, 30*100); ASSERT_EQ(old_way_params.max_authority_depth, 10); - // All 17 params (IDs 0-16, no deferred_trx_expiration_window) + // All 18 params (IDs 0-17, no deferred_trx_expiration_window) // 0:max_block_net_usage 1:target_block_net_usage_pct 2:max_transaction_net_usage // 3:net_usage_leeway // 4:max_block_cpu_usage 5:target_block_cpu_usage_pct @@ -154,8 +154,8 @@ class [[sysio::contract("params_test")]] params_test : public sysio::contract { // 8:max_transaction_lifetime 9:max_transaction_delay // 10:max_inline_action_size 11:max_inline_action_depth(u16) 12:max_authority_depth(u16) // 13:max_action_return_value_size 14:max_kv_key_size 15:max_kv_value_size - // 16:max_kv_secondary_key_size - params_object(17_ui) (0_ui)(1024*1024*4_64) + // 16:max_kv_secondary_key_size 17:notify_cpu_stipend + params_object(18_ui) (0_ui)(1024*1024*4_64) (1_ui)(35*100_32) (2_ui)(1024*1024*2_32) (3_ui)(700_32) @@ -171,13 +171,14 @@ class [[sysio::contract("params_test")]] params_test : public sysio::contract { (13_ui)(1024_32) (14_ui)(256_32) (15_ui)(262144_32) - (16_ui)(256_32).set(); + (16_ui)(256_32) + (17_ui)(150_32).set(); get_blockchain_parameters(old_way_params); - ASSERT_EQ(params_object({17_ui,0_ui,1_ui,2_ui,3_ui,4_ui, + ASSERT_EQ(params_object({18_ui,0_ui,1_ui,2_ui,3_ui,4_ui, 5_ui,6_ui,7_ui,8_ui,9_ui, 10_ui,11_ui,12_ui,13_ui, - 14_ui,15_ui,16_ui}).get(), - params_object(17_ui)(0_ui)(1024*1024*4_64) + 14_ui,15_ui,16_ui,17_ui}).get(), + params_object(18_ui)(0_ui)(1024*1024*4_64) (1_ui)(35*100_32) (2_ui)(1024*1024*2_32) (3_ui)(700_32) @@ -193,7 +194,8 @@ class [[sysio::contract("params_test")]] params_test : public sysio::contract { (13_ui)(1024_32) (14_ui)(256_32) (15_ui)(262144_32) - (16_ui)(256_32)); + (16_ui)(256_32) + (17_ui)(150_32)); ASSERT_EQ(old_way_params.max_block_net_usage, 1024*1024*4); ASSERT_EQ(old_way_params.target_block_net_usage_pct, 35*100); ASSERT_EQ(old_way_params.max_transaction_net_usage, 1024*1024*2); @@ -211,6 +213,7 @@ class [[sysio::contract("params_test")]] params_test : public sysio::contract { ASSERT_EQ(old_way_params.max_kv_key_size, 256); ASSERT_EQ(old_way_params.max_kv_value_size, 262144); ASSERT_EQ(old_way_params.max_kv_secondary_key_size, 256); + ASSERT_EQ(old_way_params.notify_cpu_stipend, 150); //max_kv_key_size ASSERT_EQ(params_object(1_ui)(14_ui).get(), @@ -224,6 +227,14 @@ class [[sysio::contract("params_test")]] params_test : public sysio::contract { params_object(1_ui)(16_ui)(512_32).set(); ASSERT_EQ(params_object(1_ui)(16_ui).get(), params_object(1_ui)(16_ui)(512_32)); + + //notify_cpu_stipend: 0 turns it off, and it may reach max_transaction_cpu_usage + params_object(1_ui)(17_ui)(0_32).set(); + ASSERT_EQ(params_object(1_ui)(17_ui).get(), + params_object(1_ui)(17_ui)(0_32)); + params_object(1_ui)(17_ui)(230'000_32).set(); + ASSERT_EQ(params_object(1_ui)(17_ui).get(), + params_object(1_ui)(17_ui)(230'000_32)); } [[sysio::action]] void setthrow1(){ @@ -251,6 +262,13 @@ class [[sysio::contract("params_test")]] params_test : public sysio::contract { params_object(1_ui)(16_ui)(513_32).set(); } + [[sysio::action]] void throwstipend(){ + //notify_cpu_stipend one past max_transaction_cpu_usage + blockchain_parameters params; + get_blockchain_parameters(params); + params_object(1_ui)(17_ui)(uint32_t(params.max_transaction_cpu_usage + 1)).set(); + } + [[sysio::action]] void getthrow1(){ //unknown configuration index params_object(1_ui)(100_ui).get(); diff --git a/unittests/test-contracts/params_test/params_test.wasm b/unittests/test-contracts/params_test/params_test.wasm index a4beb56fa3bc614921c6af94e4b17c9e390e5496..453e056592ad31556b95a85963fc4044f1a5416d 100755 GIT binary patch delta 1693 zcmZ9LZERCj7{|{!ZMSaqZe5|b-Ak9-u1NO+y?vvl@23P@LJS*9)C4JG#kewIzz`9T zDyS0#ClB!h5jSH5gMuCXU=SlC5+m|1iVRV@iAIzdh-e}Z@!Z}!YW#Bl=lq`kbDwjb z``n=y@t)UlwjC3X8y><!7UD~}o0>6|M!<9!fmj-Z^JO-C6#gzdOinfD zJ}%!{jt$Ui++Rwo^fmMi3^$Dn)Kx)bgE@Q+-VSNrg0s-aTk!d>9LL-6gx;8{h)T1bW(ceOp!iJGnovQ`JS^y{wV!KBhweYD$@D1|LsZ{pMZ?n zIDglo@kH~)j5q`#EP^!V3Bb2sf%yaV49X%Efpd`mgaA8^BLdhFQw@u(9& zLrdfr4SZXK&(bm({(cWS$U2(Q%JkrcajS!5FwGDd_m4nFHSZi5DMtH>(LEQ7_*Kjr zFDKoC*Q)p7&mmj;G90b>jbtz7hH95%vh#Zws(q)zLN*5(2WDIP2kC)QI;|pP6`P;9rRY7+#1a}tQSi7-59GkG$5KsOKjMV z*c_VEdLEWH`At|~Q^WS!v^09s_;}fP7tY%PyBiH8k09Hy6^xCR0}dmGSxuIlyKy3h z_nR%b&Zbrj$EH|vUo-QgR59Y6Qc?0Fngz-8zZCv~)QDi+RUhVxgy z`)MRGm(vPZzpJAqNbHCqQ$U0w3X7?tQQ=?1pY-Jr?%Dp-2Us z3TvSy5(6%3Vp;+Hkp?ZIFI_;oO`@ALqSf$RRK#955;nro zXn@U(v@*mZP1AzHvhGxJb;p{de6OiXm-Ti%u_oEsvnsi=x2tFI(v)D02reHi^a(1r zTZFb)7kgD(jKb}hgZ%()F%u-?8i>bdtK1$bV#0pl5)Gwt<3#u;X2%|w6En+PFLSp? zoGgk`Q{k*nfGu$YyT;}`>!~`oD;~hGKW-%M=`1e+g9$A}6ZI;O=qpqnOmJ$^jnKa` CO5#BP delta 1309 zcmYk6ZERCj9LCQ%TT5T)RwwJ;sNCLl*kCu>ZSC4QcJJxf+`x2Xb=#Xg; zNm?^>Lqo#$WKkDi&}ra{40Dw%XtL?}W`c-QHryM_NPuC&CqpC=&+RRCxygA>e*fn@ z=YQ`xxn~CGH}BB%t&{}=c#dvDf^M+hzd`H?!jnrlLj$I$?eeYwW@(YS9G3`pz9G{t znT6SMoD)ubY&I@uNu-PCcJb~*G6@U7REcqCk3_aPghkA0m+nW1HRVl4-Z^BM7_0O6xPDm=}jaG^V=_8Ax>%+4N)I^o+pz@+NAfy2Y$`)7x@n+ zgWg?5+xe-_a}9jqYR25bXYB^0==A^8$Byx&#h@e8kGwvXq&&$C{LdD; zmwS9~1#57&t`k=yCA0?W)A<_TB2$cQ-C!fU_X@H1T7pri+=cq68^6>`S;1%oiuwec zN*KfSh1jVy(g40xTF|WME;FoZ2qQ`!wyTZ!OR$~FTI6sCE~!4$t9kfWjbTWY(a9@u zSA85WDY>}7tMy$5V+z0v24gwc9V>;ZSa65uSO|Z2n%Iw9FkV}NiI@yE=ED6L#|J{6 zZK%SM&<`6Th&B}Ac0;XrmF}(kXi$tCC5=8B7PA5*8cpbE+-8eJYo){cj_#4_Q1?uQ r_G42X6S`vM)WKWf3w9Zeh>C+5+vk5_+e^^ diff --git a/unittests/test-data/consensus_blockchain/blocks.index b/unittests/test-data/consensus_blockchain/blocks.index index 654e016bbe300969706ca9fb42d4892e201499e9..6b088950aa833047dda9433106c37606183bf2be 100644 GIT binary patch literal 136 zcmaFN00GI25L%T9La*5jp+ojT=!g3ublyP-eef`Z7C8o?7aoVudM6?D?o$vt@d||g Td<{ak-h|Lo??CAAyAT=x`Uw;A literal 136 zcmcc500Hrg5L%H5Lc48-(C_v_=<59tn&TjZjy?>b*Byn>*2f|Ai4zby^b~~teHlXc SUW3r`HzBnC9SHpqN&^7AMiWf{ diff --git a/unittests/test-data/consensus_blockchain/blocks.log b/unittests/test-data/consensus_blockchain/blocks.log index d0f4e747399347e21047c9bb7f1e9f81adc48815..267ff3f8678520adabcbdd70beeac35f1c53d43d 100644 GIT binary patch delta 6634 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 E4>r}R1ONa4 delta 6559 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 diff --git a/unittests/test-data/consensus_blockchain/id b/unittests/test-data/consensus_blockchain/id index 1cba40abd172e5a3ee47458c72e02c726c2472ee..1b0c61cb2b9302e762c8aa75205dcb8720b74fe6 100644 GIT binary patch literal 32 ocmZQzU=TUbblrRA&eWA<+57DEmtTFET06T($%8jwDz~jR0NcV1BLDyZ literal 32 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 Date: Tue, 10 Nov 2026 20:44:15 -0500 Subject: [PATCH 5/6] Warm the pause contract before the speculative checktime timings CI run 42879946461 on e2814b14c1 failed `checktime_speculative_max_trx_test` on sys-vm-oc in every Linux job: its first push threw `deadline_exception` instead of `tx_cpu_usage_exceeded` from a 25 ms max-transaction-time. That push is the pause contract's first run, which in sys-vm-oc-forced mode compiles the contract, about 0.9 s here. Master bills the compile to the transaction, which then fails on its 25 ms limit. This branch pauses billing for the compile, as instantiation already is, so that loading or compiling a module is never billed on any runtime: the transaction's deadlines move past the pause, but the push's 500 ms block deadline does not, so the push stops there. With only that pause reverted, the push fails on its 25 ms limit as on master, 5 of 5 runs each way. The test now runs the contract once before its timings, through a `warm_pause_contract` helper its interrupt half also uses. Two tests pause a frame through `substitute_apply`, the same on every runtime, first the input action's frame and then a notified contract's. One checks that the frame's CPU and deadline leave the pause out. The other checks that a pause past the block deadline stops the transaction with `deadline_exception`, which a producer retries. Change-Id: Id65e27318f3da9204a2d77d36271479f08af525f --- unittests/checktime_tests.cpp | 20 +++-- unittests/receiver_cpu_billing_tests.cpp | 94 ++++++++++++++++++++++++ 2 files changed, 109 insertions(+), 5 deletions(-) diff --git a/unittests/checktime_tests.cpp b/unittests/checktime_tests.cpp index 7b258f1b3f..61eff8d8e6 100644 --- a/unittests/checktime_tests.cpp +++ b/unittests/checktime_tests.cpp @@ -49,6 +49,18 @@ void setup_pause_contract(savanna_tester& tester) { tester.produce_block(); } +constexpr uint32_t warmup_billed_cpu_us = 1; ///< the warm-up run's receipt CPU +constexpr uint32_t warmup_max_block_cpu_ms = 10'000; ///< the warm-up run's block time: ample for any first load + +/** + * Runs the pause contract once, before the timings a test measures. sys-vm-oc compiles a contract on its first run with + * the billing timer paused: the compile is not billed, but it still takes from the push's block deadline. + */ +void warm_pause_contract(savanna_tester& tester) { + push_trx( tester, test_pause_action{}, + warmup_billed_cpu_us, UINT32_MAX, warmup_max_block_cpu_ms, true, {}, "pause"_n ); +} + } BOOST_AUTO_TEST_SUITE(checktime_tests) @@ -256,6 +268,7 @@ BOOST_AUTO_TEST_CASE( checktime_speculative_max_trx_test ) { try { savanna_tester t( conf_genesis.first, conf_genesis.second ); setup_pause_contract( t ); + warm_pause_contract( t ); BOOST_CHECK_EXCEPTION( push_trx( t, test_pause_action{}, 0, 25, 500, false, fc::raw::pack(10000000000000000000ULL), "pause"_n ), @@ -278,8 +291,6 @@ BOOST_AUTO_TEST_CASE( checktime_speculative_max_trx_test ) { try { auto& interrupt_cfg = interrupt_conf_genesis.second.initial_configuration; constexpr uint32_t interrupt_max_block_cpu_usage = 1'500'000; constexpr uint32_t interrupt_max_transaction_cpu_usage = 1'000'000; - constexpr uint32_t interrupt_warmup_billed_cpu_us = 1; - constexpr uint32_t interrupt_warmup_max_block_cpu_ms = 10'000; constexpr auto interrupt_delay = std::chrono::milliseconds(50); constexpr auto interrupt_start_timeout = std::chrono::seconds(1); constexpr auto interrupt_start_timeout_message = "Timed out waiting for speculative transaction execution"; @@ -293,9 +304,8 @@ BOOST_AUTO_TEST_CASE( checktime_speculative_max_trx_test ) { try { savanna_tester interrupt_t( interrupt_conf_genesis.first, interrupt_conf_genesis.second ); setup_pause_contract( interrupt_t ); - // sys-vm-oc compiles synchronously on first execution, so warm the contract outside the measured interrupt window. - push_trx( interrupt_t, test_pause_action{}, - interrupt_warmup_billed_cpu_us, UINT32_MAX, interrupt_warmup_max_block_cpu_ms, true, {}, "pause"_n ); + // Warm the contract outside the measured interrupt window. + warm_pause_contract( interrupt_t ); // Gate the interrupt on WASM entry, after the transaction timer starts. The warmed contract stays cached, // so execution does not pause the timer for compilation after this hook. Returning false runs the real WASM. diff --git a/unittests/receiver_cpu_billing_tests.cpp b/unittests/receiver_cpu_billing_tests.cpp index fdc35b7e09..8d1fe442cf 100644 --- a/unittests/receiver_cpu_billing_tests.cpp +++ b/unittests/receiver_cpu_billing_tests.cpp @@ -1,19 +1,25 @@ +#include #include #include #include #include #include #include +#include #include +#include + #include #include #include +#include #include #include #include +#include using namespace sysio; using namespace sysio::chain; @@ -57,6 +63,11 @@ constexpr uint32_t max_spin_doublings = 21; ///< first_long_spins doubled thi constexpr uint32_t calibration_runs = 3; ///< runs of each loop count long_spins() measures constexpr uint32_t short_spin_count = 10; constexpr uint32_t many_notifications = 50; +constexpr auto frame_pause = std::chrono::milliseconds( 50 ); ///< a pause inside a frame: 50 stipends +constexpr uint8_t short_trx_max_cpu_ms = 20; ///< a transaction limit that frame_pause runs past +constexpr uint8_t paused_trx_max_cpu_ms = 100; ///< the transaction's limit when a pause outlasts the block +constexpr auto paused_block_time = std::chrono::milliseconds( 200 ); ///< that push's block deadline +constexpr auto block_pause = std::chrono::milliseconds( 400 ); ///< a pause past that block deadline constexpr const char* spin_command = "spin:"; ///< cpu_receiver_test memo: loop n times constexpr const char* spinsend_command = "spinsend:"; ///< loop n times and send itself an inline spin of n @@ -213,6 +224,24 @@ struct receiver_cpu_tester : validating_tester { return push_transaction( trx, deadline, 0 ); } + /** + * Pauses billing for `pause` at the start of every frame that runs `receiver`'s code, as loading or compiling a + * module on its first run does, and counts the pauses in `pauses`. The hook stays until the returned guard goes. + */ + auto pause_frames_of( account_name receiver, std::chrono::milliseconds pause, uint32_t& pauses ) { + auto& substitute_apply = control->get_wasm_interface().substitute_apply; + substitute_apply = [receiver, pause, &pauses]( const digest_type&, uint8_t, uint8_t, apply_context& context ) { + if( context.get_receiver() == receiver ) { + context.trx_context.pause_billing_timer(); + std::this_thread::sleep_for( pause ); + context.trx_context.resume_billing_timer(); + ++pauses; + } + return false; // the code runs as usual + }; + return fc::make_scoped_exit( [&substitute_apply]() { substitute_apply = {}; } ); + } + /// Pushes with `billed` as the receipt's CPU, read the way a validator reads a block's receipt. transaction_trace_ptr push_explicit( const signed_transaction& trx, cpu_usage_t billed ) { auto ptrx = std::make_shared( trx ); @@ -513,6 +542,71 @@ BOOST_FIXTURE_TEST_CASE( cold_module_load_takes_none_of_the_stipend, receiver_cp produce_and_check_validator( { token_account, alice, cold } ); } FC_LOG_AND_RETHROW() +BOOST_FIXTURE_TEST_CASE( pause_in_a_frame_is_left_out_of_its_cpu_and_deadline, receiver_cpu_tester ) try { + // A hook pauses a frame the way a first run's load does, the same on every runtime: first the input action's frame, + // under a transaction limit shorter than the pause, then a notified contract's that has no CPU, with no leeway. Each + // push succeeds only if the paused frame's deadline moves past the pause and its CPU leaves the pause out. + transfer( alice, idle, amount, "" ); // loads the modules, so the hook's are the frames' only pauses + produce_block(); + // A block deadline, as a producer and a speculative node push every transaction with, enables the billing pause. + const auto block_deadline = [] { return fc::time_point::now() + fc::seconds( 10 ); }; + const int64_t pause_us = std::chrono::microseconds( frame_pause ).count(); + uint32_t pauses = 0; + { + auto hook = pause_frames_of( token_account, frame_pause, pauses ); + auto trx = make_trx( { transfer_action( alice, idle, amount, "" ) } ); + trx.max_cpu_usage_ms = short_trx_max_cpu_ms; + sign( trx ); + auto trace = push_measured( trx, block_deadline() ); + BOOST_TEST( pauses == 1u ); + auto receipt = entries( trace ); + BOOST_REQUIRE_EQUAL( receipt.size(), 2u ); + BOOST_TEST( receipt[0] < pause_us ); + BOOST_TEST( frame( trace, token_account, "transfer"_n ).elapsed.count() >= pause_us ); // paused inside the frame + } + control->set_subjective_cpu_leeway( fc::microseconds( 0 ) ); + { + auto hook = pause_frames_of( idle, frame_pause, pauses ); + auto before = cpu_windows( { token_account, idle } ); + auto trace = push_measured( make_trx( { transfer_action( alice, idle, amount, "" ) } ), block_deadline() ); + BOOST_TEST( pauses == 2u ); + auto receipt = entries( trace ); + BOOST_REQUIRE_EQUAL( receipt.size(), 2u ); + BOOST_TEST( receipt[1] == 0u ); + BOOST_TEST( frame( trace, idle, "transfer"_n ).elapsed.count() >= pause_us ); // paused inside the frame + check_billed( before, { token_account } ); + } + control->set_subjective_cpu_leeway( fc::microseconds( config::default_subjective_cpu_leeway_us ) ); + produce_and_check_validator( { token_account, alice, idle } ); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( pause_past_the_block_deadline_stops_at_the_block_deadline, receiver_cpu_tester ) try { + // A pause is left out of a frame's CPU but not out of the block's time. The transaction's limit is within the push's + // block deadline, and a pause runs past both: in the input action's frame, then in a notified contract's. The + // deadlines move past the pause, but not past the block deadline: the transaction stops there with + // deadline_exception, which a producer retries in a later block, rather than failing on any account's CPU or the + // transaction's limit. + transfer( alice, idle, amount, "" ); // loads the modules, so the hook's are the frames' only pauses + produce_block(); + uint32_t pauses = 0; + for( auto paused : { token_account, idle } ) { + BOOST_TEST_CONTEXT( "pausing " << paused ) { + auto hook = pause_frames_of( paused, block_pause, pauses ); + auto trx = make_trx( { transfer_action( alice, idle, amount, "" ) } ); + trx.max_cpu_usage_ms = paused_trx_max_cpu_ms; + sign( trx ); + const auto block_deadline = + fc::time_point::now() + fc::microseconds( std::chrono::microseconds( paused_block_time ).count() ); + BOOST_CHECK_THROW( push_measured( trx, block_deadline ), deadline_exception ); + } + produce_block(); // the next transaction differs + } + BOOST_TEST( pauses == 2u ); + // Without the pause it runs. + transfer( alice, idle, amount, "" ); + produce_and_check_validator( { token_account, alice, idle } ); +} FC_LOG_AND_RETHROW() + BOOST_FIXTURE_TEST_CASE( zero_entry_leaves_the_contracts_cpu_window_alone, receiver_cpu_tester ) try { // relay spends CPU and then loses its weight, so its window holds more than its allowance of none. Billing it even // 0 us would fail the window check. From 4dff4c6953d492870b0ffeba042b414c56ef5851 Mon Sep 17 00:00:00 2001 From: Kevin Heifner Date: Tue, 10 Nov 2026 22:28:31 -0500 Subject: [PATCH 6/6] Bound the shared stipend by the frames' own time CI run 42941122275 failed `stipend_is_shared_by_the_frames_billed_to_the_contract` on asan and ubsan. Its last check compared entries from separate one-frame and two-frame transactions, so a host that slowed one batch could fail it. The test now checks, within each transaction, that the entry leaves out of its two frames' elapsed time less than 1.5 stipends: one stipend plus the time outside the frames, where a stipend per frame would leave out two. Change-Id: Iecf2452a0cb08c78eace93a9a3b7cd63cbe425bd --- unittests/receiver_cpu_billing_tests.cpp | 29 ++++++++++++++---------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/unittests/receiver_cpu_billing_tests.cpp b/unittests/receiver_cpu_billing_tests.cpp index 8d1fe442cf..832ce0556c 100644 --- a/unittests/receiver_cpu_billing_tests.cpp +++ b/unittests/receiver_cpu_billing_tests.cpp @@ -288,16 +288,23 @@ struct receiver_cpu_tester : validating_tester { return *long_spin_count; } - /// The smallest game entry of calibration_runs transfers to it with memo `command` and a count: `count` raised by - /// the run, so that the transactions differ. Being descheduled only adds to an entry. - uint32_t smallest_game_entry( const std::string& command, uint32_t count ) { - uint32_t smallest = std::numeric_limits::max(); + /** + * How much of its two frames' elapsed time the game's entry leaves out, for a transfer whose handler spins `count` + * times and sends itself an inline spin of `count`: the least of calibration_runs transfers, `count` raised by the + * run so that the transactions differ. A frame's elapsed time and its CPU span the same run, so the host's speed and + * load cancel; being descheduled outside a frame only adds to what is left out. + */ + int64_t least_left_out_of_game_frames( uint32_t count ) { + int64_t least = std::numeric_limits::max(); for( uint32_t run = 0; run < calibration_runs; ++run ) { - auto receipt = entries( transfer( alice, game, amount, command + std::to_string( count + run ) ) ); + auto trace = transfer( alice, game, amount, spinsend_command + std::to_string( count + run ) ); + auto receipt = entries( trace ); BOOST_REQUIRE_EQUAL( receipt.size(), 2u ); - smallest = std::min( smallest, receipt[1] ); + const int64_t frames_us = + frame( trace, game, "transfer"_n ).elapsed.count() + frame( trace, game, "spin"_n ).elapsed.count(); + least = std::min( least, frames_us - static_cast( receipt[1] ) ); } - return smallest; + return least; } /// A transfer memo that keeps cpu_receiver_test's handler busy well past the stipend. @@ -726,11 +733,9 @@ BOOST_FIXTURE_TEST_CASE( stipend_is_shared_by_the_frames_billed_to_the_contract, check_billed( before, { token_account, game } ); produce_and_check_validator( { token_account, alice, game } ); - // The same loops in one frame bill about as much. A stipend for each frame would leave the two-frame entry a - // whole stipend lower; the second frame's own overhead only raises it. - const uint32_t one_frame = smallest_game_entry( spin_command, 2 * n ); - const uint32_t two_frames = smallest_game_entry( spinsend_command, n ); - BOOST_TEST( static_cast( two_frames ) > static_cast( one_frame ) - stipend_us / 2 ); + // The entry leaves out of its frames' elapsed time one stipend and the little time outside the frames. A stipend + // for each frame would leave out a second one. + BOOST_TEST( least_left_out_of_game_frames( n ) < stipend_us + stipend_us / 2 ); produce_and_check_validator( { token_account, alice, game } ); } FC_LOG_AND_RETHROW()